{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys,copy,os,inspect\n",
    "if hasattr(sys.modules[__name__], '__file__'):\n",
    "    _file_name = __file__\n",
    "else:\n",
    "    _file_name = inspect.getfile(inspect.currentframe())\n",
    "CURRENT_FILE_PATH = os.path.dirname(_file_name)\n",
    "sys.path.append(os.getcwd()+\"/../neuronVis\")\n",
    "import matplotlib.pyplot as plt\n",
    "from skimage import draw, io\n",
    "import matplotlib\n",
    "import BoundLaplace\n",
    "import copy\n",
    "import rtFlatmap\n",
    "import BoundLaplace\n",
    "import nrrd\n",
    "import numpy as np\n",
    "import IONData\n",
    "import IONData,Scene,SwcLoader\n",
    "import NeuronProcess\n",
    "import matplotlib\n",
    "matplotlib.use('module://matplotlib_inline.backend_inline')\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/rtDilationMask.nrrd  downloaded\n"
     ]
    }
   ],
   "source": [
    "iondata = IONData.IONData()\n",
    "# rtDilationMask200,rtDilationMask200header = nrrd.read('../resource/rt/rtDilationMask100.nrrd')\n",
    "res,gridpath = iondata.getFileFromServer(\"rtDilationMask.nrrd\")\n",
    "rtDilationMask,rtDilationMask200header = nrrd.read(gridpath)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def getRTbraches(neuron):\n",
    "    print(neuron['sampleid'], neuron['name'])\n",
    "    neuronT = iondata.getNeuronTreeByID(neuron['sampleid'], neuron['name'])\n",
    "    neuronT.dendriteHide=True\n",
    "    NeuronProcess.CalculateBranchMaxDepth(neuronT)\n",
    "    rtbranches=[]\n",
    "    if neuronT.rootAxonEdge is None:\n",
    "        return\n",
    "    for edge in neuronT.edges:\n",
    "        isrt = rtDilationMask[int(edge.data[0].x/20),int(edge.data[0].y/20),int(edge.data[0].z/20)]\n",
    "        if edge.maxDepth<neuronT.rootAxonEdge.maxDepth*0.5 and isrt:\n",
    "            edge.order=0\n",
    "            rtbranches.append(edge)\n",
    "    return rtbranches"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "exist  c:\\Users\\xfwang\\Documents\\workspace\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/066.swc\n",
      "210726 066.swc\n",
      "exist  c:\\Users\\xfwang\\Documents\\workspace\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/066.swc\n"
     ]
    }
   ],
   "source": [
    "import Visual as nv\n",
    "import json\n",
    "neuronvis = nv.neuronVis(renderModel=0)\n",
    "\n",
    "neuronvis.render.setBackgroundColor((0.0,0.0,0.,1.0))\n",
    "# neuronvis.addRegion('IB',[0.5,1.0,0.5])\n",
    "# neuronvis.addRegion('MP',[0.5,.0,0.5])\n",
    "# neuronvis.addRegion('P',[0.9,1.0,0.5])\n",
    "# neuronvis.addRegion('MY',[0.5,1.0,0.9])\n",
    "\n",
    "neurons=iondata.getNeuronListBySampleID('210726')\n",
    "neuronvis.render.setLookAt((5000,-15000,0),(5000,0,0),(0,0,-1))\n",
    "edgesForCluster=[]\n",
    "\n",
    "for neuron in neurons[64:65]:\n",
    "    neuronT = iondata.getNeuronTreeByID(neuron['sampleid'], neuron['name'])\n",
    "    rtbranches=getRTbraches(neuron)\n",
    "    if rtbranches is None:\n",
    "        continue\n",
    "    newneuron=SwcLoader.NeuronTree()\n",
    "    if len(rtbranches):\n",
    "        newneuron.edges= rtbranches\n",
    "        newneuron.rootAxonEdge = neuronT.rootAxonEdge\n",
    "        newneuron.root=neuronT.root\n",
    "    neuronvis.addNeuronTree(newneuron,'neuronname',depthIntensity=False)\n",
    "# neuronvis.render.savepng('../resource/mainbranch/cluster_'+str(neuron['cluster'])+'.png')\n",
    "# neuronvis.clear()\n",
    "neuronvis.render.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "../resource/scene/thisocluster-1.nv\n",
      "210661 169.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/169.swc\n",
      "869\n",
      "210726 065.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/065.swc\n",
      "998\n",
      "210726 066.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/066.swc\n",
      "0\n",
      "210726 067.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/067.swc\n",
      "379\n",
      "210726 075.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/075.swc\n",
      "153\n",
      "210726 076.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/076.swc\n",
      "103\n",
      "210726 082.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/082.swc\n",
      "898\n",
      "210726 084.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/084.swc\n",
      "531\n",
      "210726 087.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/087.swc\n",
      "1079\n",
      "210726 088.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/088.swc\n",
      "50\n",
      "210661 052.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/052.swc\n",
      "1666\n",
      "210661 172.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/172.swc\n",
      "1479\n",
      "210661 168.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/168.swc\n",
      "667\n",
      "210661 170.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/170.swc\n",
      "1272\n",
      "210661 179.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/179.swc\n",
      "990\n",
      "210662 066.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/066.swc\n",
      "1606\n",
      "210662 067.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/067.swc\n",
      "1693\n",
      "210662 069.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/069.swc\n",
      "1930\n",
      "211986 037.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/037.swc\n",
      "6\n",
      "210727 018.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/018.swc\n",
      "752\n",
      "210661 045.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/045.swc\n",
      "1356\n",
      "210661 143.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/143.swc\n",
      "1007\n",
      "210662 068.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/068.swc\n",
      "1321\n",
      "210661 132.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/132.swc\n",
      "2557\n",
      "211986 058.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/058.swc\n",
      "698\n",
      "../resource/scene/thisocluster-2.nv\n",
      "210726 080.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/080.swc\n",
      "105\n",
      "210726 068.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/068.swc\n",
      "1039\n",
      "210726 069.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/069.swc\n",
      "679\n",
      "210726 073.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/073.swc\n",
      "0\n",
      "210726 074.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/074.swc\n",
      "83\n",
      "210726 077.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/077.swc\n",
      "342\n",
      "210726 078.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/078.swc\n",
      "6\n",
      "210726 079.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/079.swc\n",
      "130\n",
      "210726 086.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/086.swc\n",
      "373\n",
      "210727 031.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/031.swc\n",
      "526\n",
      "211986 056.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/056.swc\n",
      "712\n",
      "210661 046.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/046.swc\n",
      "1706\n",
      "210661 171.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/171.swc\n",
      "959\n",
      "210727 001.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/001.swc\n",
      "1442\n",
      "210727 055.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/055.swc\n",
      "662\n",
      "211986 036.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/036.swc\n",
      "692\n",
      "210726 070.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/070.swc\n",
      "567\n",
      "210726 071.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/071.swc\n",
      "1411\n",
      "210726 072.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/072.swc\n",
      "293\n",
      "210727 002.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/002.swc\n",
      "791\n",
      "210727 003.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/003.swc\n",
      "1405\n",
      "210727 005.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/005.swc\n",
      "482\n",
      "210727 019.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/019.swc\n",
      "684\n",
      "210727 030.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/030.swc\n",
      "730\n",
      "210727 032.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/032.swc\n",
      "767\n",
      "210727 033.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/033.swc\n",
      "1246\n",
      "210727 056.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/056.swc\n",
      "7\n",
      "210661 176.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/176.swc\n",
      "2892\n",
      "210661 177.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/177.swc\n",
      "24\n",
      "../resource/scene/thisocluster-3.nv\n",
      "210726 131.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/131.swc\n",
      "63\n",
      "210726 132.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/132.swc\n",
      "0\n",
      "210726 081.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/081.swc\n",
      "221\n",
      "210726 089.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/089.swc\n",
      "358\n",
      "211986 066.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/066.swc\n",
      "758\n",
      "211986 057.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/057.swc\n",
      "86\n",
      "210726 106.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/106.swc\n",
      "0\n",
      "210661 123.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/123.swc\n",
      "811\n",
      "210661 130.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/130.swc\n",
      "361\n",
      "210661 133.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/133.swc\n",
      "1476\n",
      "210661 135.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/135.swc\n",
      "930\n",
      "210661 166.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/166.swc\n",
      "2318\n",
      "210661 175.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/175.swc\n",
      "137\n",
      "210661 215.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/215.swc\n",
      "0\n",
      "210727 029.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/029.swc\n",
      "0\n",
      "../resource/scene/thisocluster-4.nv\n",
      "210098 030.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/030.swc\n",
      "619\n",
      "211984 001.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/001.swc\n",
      "0\n",
      "211984 002.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/002.swc\n",
      "0\n",
      "211984 004.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/004.swc\n",
      "0\n",
      "211984 005.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/005.swc\n",
      "747\n",
      "211984 008.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/008.swc\n",
      "0\n",
      "211984 009.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/009.swc\n",
      "0\n",
      "211984 010.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/010.swc\n",
      "218\n",
      "210098 001.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/001.swc\n",
      "1570\n",
      "../resource/scene/thisocluster-5.nv\n",
      "211984 015.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/015.swc\n",
      "0\n",
      "211984 029.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/029.swc\n",
      "1186\n",
      "210726 058.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/058.swc\n",
      "1493\n",
      "210726 059.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/059.swc\n",
      "0\n",
      "210726 060.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/060.swc\n",
      "1638\n",
      "210726 061.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/061.swc\n",
      "3868\n",
      "210098 020.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/020.swc\n",
      "45\n",
      "210098 026.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/026.swc\n",
      "90\n",
      "210661 076.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/076.swc\n",
      "2902\n",
      "211984 003.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/003.swc\n",
      "0\n",
      "211984 017.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/017.swc\n",
      "0\n",
      "211984 020.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/020.swc\n",
      "0\n",
      "211984 021.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/021.swc\n",
      "0\n",
      "211984 022.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/022.swc\n",
      "0\n",
      "211984 031.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/031.swc\n",
      "0\n",
      "211984 032.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/032.swc\n",
      "204\n",
      "211984 033.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/033.swc\n",
      "0\n",
      "211984 037.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/037.swc\n",
      "0\n",
      "211984 042.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/042.swc\n",
      "801\n",
      "211984 044.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/044.swc\n",
      "0\n",
      "210661 144.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/144.swc\n",
      "0\n",
      "210661 200.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/200.swc\n",
      "1220\n",
      "211986 087.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/087.swc\n",
      "0\n",
      "211984 026.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/026.swc\n",
      "0\n",
      "211984 030.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/030.swc\n",
      "0\n",
      "211984 082.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/082.swc\n",
      "0\n",
      "210726 057.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/057.swc\n",
      "1518\n",
      "210661 122.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/122.swc\n",
      "313\n",
      "210661 124.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/124.swc\n",
      "531\n",
      "210726 108.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/108.swc\n",
      "42\n",
      "210726 109.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/109.swc\n",
      "0\n",
      "210726 063.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/063.swc\n",
      "838\n",
      "210661 077.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/077.swc\n",
      "557\n",
      "../resource/scene/thisocluster-6.nv\n",
      "210661 146.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/146.swc\n",
      "316\n",
      "210726 062.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/062.swc\n",
      "1166\n",
      "211181 072.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/072.swc\n",
      "916\n",
      "210098 013.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/013.swc\n",
      "0\n",
      "210661 078.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/078.swc\n",
      "1060\n",
      "211984 036.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/036.swc\n",
      "212\n",
      "211984 043.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/043.swc\n",
      "0\n",
      "211984 045.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/045.swc\n",
      "0\n",
      "210661 042.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/042.swc\n",
      "1265\n",
      "210661 043.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/043.swc\n",
      "593\n",
      "210661 044.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/044.swc\n",
      "814\n",
      "210661 058.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/058.swc\n",
      "970\n",
      "210661 060.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/060.swc\n",
      "1191\n",
      "210661 136.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/136.swc\n",
      "1448\n",
      "210661 137.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/137.swc\n",
      "1612\n",
      "210661 197.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/197.swc\n",
      "1628\n",
      "210661 208.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/208.swc\n",
      "1488\n",
      "211181 071.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/071.swc\n",
      "0\n",
      "210661 054.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/054.swc\n",
      "3838\n",
      "210661 056.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/056.swc\n",
      "2839\n",
      "210661 125.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/125.swc\n",
      "404\n",
      "210661 059.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/059.swc\n",
      "5146\n",
      "210662 117.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/117.swc\n",
      "1715\n",
      "210726 110.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/110.swc\n",
      "20\n",
      "../resource/scene/thisocluster-7.nv\n",
      "210661 154.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/154.swc\n",
      "1103\n",
      "210726 083.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/083.swc\n",
      "61\n",
      "210726 123.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/123.swc\n",
      "752\n",
      "211181 074.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/074.swc\n",
      "921\n",
      "210661 206.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/206.swc\n",
      "1258\n",
      "210661 207.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/207.swc\n",
      "314\n",
      "211181 063.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/063.swc\n",
      "6\n",
      "211181 066.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/066.swc\n",
      "681\n",
      "211181 073.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/073.swc\n",
      "58\n",
      "211986 069.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/069.swc\n",
      "0\n",
      "210098 011.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/011.swc\n",
      "496\n",
      "210098 025.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/025.swc\n",
      "0\n",
      "210098 027.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/027.swc\n",
      "893\n",
      "210098 029.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/029.swc\n",
      "379\n",
      "210661 079.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/079.swc\n",
      "1152\n",
      "210661 080.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/080.swc\n",
      "1085\n",
      "210661 173.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/173.swc\n",
      "1252\n",
      "210662 073.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/073.swc\n",
      "799\n",
      "211181 070.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/070.swc\n",
      "0\n",
      "211984 018.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/018.swc\n",
      "0\n",
      "211984 034.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/034.swc\n",
      "0\n",
      "210662 070.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/070.swc\n",
      "1086\n",
      "210661 047.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/047.swc\n",
      "1773\n",
      "210661 048.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/048.swc\n",
      "2266\n",
      "210661 049.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/049.swc\n",
      "1174\n",
      "210661 050.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/050.swc\n",
      "1584\n",
      "210661 053.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/053.swc\n",
      "2718\n",
      "210661 057.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/057.swc\n",
      "2471\n",
      "210661 198.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/198.swc\n",
      "1971\n",
      "210661 199.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/199.swc\n",
      "337\n",
      "210662 071.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/071.swc\n",
      "0\n",
      "210662 072.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/072.swc\n",
      "658\n",
      "210662 115.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/115.swc\n",
      "1959\n",
      "211984 013.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/013.swc\n",
      "0\n",
      "210661 055.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/055.swc\n",
      "1815\n",
      "210661 081.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/081.swc\n",
      "1462\n",
      "210661 205.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/205.swc\n",
      "588\n",
      "210662 105.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/105.swc\n",
      "1037\n",
      "210662 106.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/106.swc\n",
      "1189\n",
      "210662 108.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/108.swc\n",
      "1611\n",
      "210662 109.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/109.swc\n",
      "1643\n",
      "210662 110.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/110.swc\n",
      "640\n",
      "210662 111.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/111.swc\n",
      "1164\n",
      "210662 113.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/113.swc\n",
      "579\n",
      "211181 064.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/064.swc\n",
      "0\n",
      "211181 065.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/065.swc\n",
      "0\n",
      "210727 045.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/045.swc\n",
      "0\n",
      "210727 059.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/059.swc\n",
      "0\n"
     ]
    }
   ],
   "source": [
    "clusterRTlength={}\n",
    "for i in range(1,8):\n",
    "    scenefile = '../resource/scene/thisocluster-'+str(i)+'.nv'\n",
    "    print(scenefile)\n",
    "    neuronlist = Scene.scene2List(scenefile)\n",
    "    RTlengthList=[]\n",
    "    for neuron in neuronlist:\n",
    "        rtbranches = getRTbraches(neuron)\n",
    "        length =0\n",
    "        for edge in rtbranches:\n",
    "            length+=len(edge.data)\n",
    "        print(length)\n",
    "        RTlengthList.append(length)\n",
    "    clusterRTlength[i]=RTlengthList"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1: [869, 998, 0, 379, 153, 103, 898, 531, 1079, 50, 1666, 1479, 667, 1272, 990, 1606, 1693, 1930, 6, 752, 1356, 1007, 1321, 2557, 698], 2: [105, 1039, 679, 0, 83, 342, 6, 130, 373, 526, 712, 1706, 959, 1442, 662, 692, 567, 1411, 293, 791, 1405, 482, 684, 730, 767, 1246, 7, 2892, 24], 3: [63, 0, 221, 358, 758, 86, 0, 811, 361, 1476, 930, 2318, 137, 0, 0], 4: [619, 0, 0, 0, 747, 0, 0, 218, 1570], 5: [0, 1186, 1493, 0, 1638, 3868, 45, 90, 2902, 0, 0, 0, 0, 0, 0, 204, 0, 0, 801, 0, 0, 1220, 0, 0, 0, 0, 1518, 313, 531, 42, 0, 838, 557], 6: [316, 1166, 916, 0, 1060, 212, 0, 0, 1265, 593, 814, 970, 1191, 1448, 1612, 1628, 1488, 0, 3838, 2839, 404, 5146, 1715, 20], 7: [1103, 61, 752, 921, 1258, 314, 6, 681, 58, 0, 496, 0, 893, 379, 1152, 1085, 1252, 799, 0, 0, 0, 1086, 1773, 2266, 1174, 1584, 2718, 2471, 1971, 337, 0, 658, 1959, 0, 1815, 1462, 588, 1037, 1189, 1611, 1643, 640, 1164, 579, 0, 0, 0, 0]}\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAIDCAYAAAA9nWfBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABWcklEQVR4nO3deVxV1f7/8fc+iCCgJCLO4hzOilo5m98yzZtTmlrmlHW7TZqVZaWi9s3uVUvLsm73mvWtzMoptelWWuaQhRqigaEIjglKjIIK+/eHP86NZDh4NmyG1/PxOA9h77XX+pzl9Gafvdc2TNM0BQAAANjIYXcBAAAAAKEUAAAAtiOUAgAAwHaEUgAAANiOUAoAAADbEUoBAABgO0IpAAAAbEcoBQAAgO0IpQAAALAdoRQAAAC2I5SWsO+++0633Xab6tevL8MwtH79+mIdHx0drRtvvFF16tSRt7e3mjVrpmeffVYXL14smYIBAABsUMXuAiq69PR0dezYUZMnT9aIESOKfbynp6fGjx+v0NBQXXPNNfr555917733KicnR88//3wJVAwAAFD6CKUlbNCgQRo0aFCB+7OysvTMM89o1apV+v3339WuXTv9/e9/V79+/SRJzZo1U7NmzZztg4ODtXXrVm3btq2kSwcAACg1fHxvs4ceekg7d+7UBx98oIiICI0aNUoDBw7Ur7/+mm/7mJgYff755+rbt28pVwoAAFByDNM0TbuLqCwMw9C6des0bNgwSVJ8fLyaNWum+Ph41a9f39nupptu0nXXXZfn4/kePXpoz549ysrK0n333afly5fL4eBnCgAAUDHw8b2N9u/fr+zsbLVq1SrP9qysLNWqVSvPttWrVys1NVU///yznnjiCS1atEgzZswozXIBAABKDKHURmlpafLw8FB4eLg8PDzy7PPz88vzfaNGjSRJbdq0UXZ2tu677z499thjVxwHAABQHhFKbdS5c2dlZ2frzJkz6t27t8vH5eTk6OLFi8rJySGUAgCACoFQWsLS0tIUExPj/D42Nlb79u1TQECAWrVqpbvuukvjx4/X4sWL1blzZyUkJOjrr79Whw4dNHjwYL333nvy9PRU+/bt5eXlpZ9++kkzZ87U6NGj5enpaeM7AwAAsA43OpWwrVu36sYbb7xi+4QJE7Ry5UpdvHhRzz33nN555x2dOHFCgYGB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GuncuXM6efKky4vnp6SkyN/fX8nJyapRo0ax3x8AAEBlUy7PlFatWlUPPfSQJOnBBx90XvcpXX7MaEREhPr27ZsnkC5btkwhISGaOXNmnr7q1aunsWPH6sKFC3rggQd06dIl574ZM2YoISFB48aN42lOAAAAJahc3ugkSc8++6y++uor7dixQy1btlTv3r0VFxenH374QbVr19aKFSvytE9MTFR0dLROnTp1RV9LlizRrl27tGbNGoWEhKhr1646cOCAIiMj1bJlS7344oul9bYAAAAqpXJ5plSSvL29tWXLFs2aNUs+Pj5av3694uLiNHHiRO3Zs0fNmjVzua/AwEDt3r1bDz/8sC5cuKB169YpOTlZjzzyiHbv3q2AgIASfCcAAAAol9eUlnVcUwoAAFA85fZMKQAAACoOQikAAABsRygFAACA7QilAAAAsB2hFAAAALYjlAIAAMB25Xbx/LIsd5WtlJQUmysBAAAoG6pXry7DMArcTygtAampqZKkRo0a2VwJAABA2VDU+u0snl8CcnJydPLkySJ/IrBbSkqKGjVqpGPHjrHIv5uYS+swl9ZhLq3DXFqHubROeZtLzpTawOFwqGHDhnaX4bIaNWqUiz/M5QFzaR3m0jrMpXWYS+swl9apKHPJjU4AAACwHaEUAAAAtiOUVmJeXl6aM2eOvLy87C6l3GMurcNcWoe5tA5zaR3m0joVbS650QkAAAC240wpAAAAbEcoBQAAgO0IpQAAALAdoRQAAAC2I5QCAADAdoRSAKigzpw5o/j4eLvLAACXEEohSfrss8/0zjvv2F1GmXXp0iX99ttvunjxYpFtz507RxAoQE5OjiIjI3Xo0CH9eTW68PBwhYWF6cEHH9SLL76oEydO2FRlxTF69Gg1a9bM7jLKtaysLH333XdavXq1Nm3apJMnT9pdUrkUERGhu+++W40bN5a3t7cCAwM1YMAArV271u7SyqTnnntO3377rd1llD4TME3zhhtuMB0Oh91llDkJCQnmXXfdZVarVs10OByml5eXOWzYMDMiIqLAYyZOnGh6eHiUYpXlw+bNm8169eqZDofDdDgcZkhIiLl3717TNE3z+eefNz08PEyHw2EahmE6HA7T19fX/Pjjj+0tupzr168ff6+L8MUXX5iRkZH57nv55ZfNgIAA55/Z3Nfw4cPNhISEUq607Hvi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OlStW7fWNddco3PnzunQoUPavHmzPv/8c2VnZ+e5UaooQUFBGjVqlFatWqUvvvhCQ4YM0YMPPqg6deooPj5e//d//6c1a9aoR48e2rFjR759LFmyRHfddZcGDx6s/v37q3Xr1vL391dSUpJ++uknvfLKKzp//rwk6f77789zbJUqVdStWzdt375dK1asUOfOndWpUyd5enpKkgICAhQQECBJuvXWWzV16lQtXbpU3333nVq3bq37779fvXr1Uq1atZSenq6YmBht27ZNa9euVVJSkvMyCADIlwkAcNmaNWvMJk2amJKKfLVt29b84osv8hyfu2/OnDn59n/69GmzZcuWBfY5ZswY86uvvnJ+v2XLljzH9+3bt8i6HA6HOX/+/HzH37Rpk2kYRr7H/bnmnJwcc+7cuWaVKlWKHNPX19fMyMjIc/xbb73l3B8bG1uc3wYAFRAf3wNAMYwYMULR0dF67733NG7cOF177bWqWbOmqlSpooCAAIWGhuqBBx7QN998o/3792vAgAHF6r9OnTr64Ycf9OSTT6ply5by8vJSQECA+vTpo3fffVerVq0qdPmkVatW6Z///KfuvPNOderUSXXr1lWVKlXk5+entm3b6m9/+5v27t3r/Pj9zwYPHqyvv/5aQ4cOVf369Z1nSfNjGIZmz56tQ4cOacaMGeratasCAgLk4eGh6tWrq02bNrrrrrv09ttv69SpU6pWrVqx5gJA5WKYpkWP+AAAAACuEmdKAQAAYDtCKQAAAGxHKAUAAIDtCKUAAACwHaEUAAAAtiOUAgAAwHaEUgAAANiOUAoAAADbEUoBAABgO0IpAAAAbEcoBQAAgO0IpQAAALAdoRQAAAC2I5QCAADAdv8PxFkDdh5rodoAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 750x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(clusterRTlength)\n",
    "import pandas as pd\n",
    "dataframe={}\n",
    "for i in range(1,8):\n",
    "    \n",
    "    s = pd.Series(clusterRTlength[i])\n",
    "    dataframe['TH_'+str(i)]=s \n",
    "data = pd.DataFrame(dataframe)\n",
    "plt.figure(figsize=(7.5, 5)) \n",
    "ax=plt.gca()\n",
    "ax.spines['top'].set_visible(False)\n",
    "ax.spines['right'].set_visible(False)\n",
    "data.boxplot(fontsize=15,showfliers=False)\n",
    "ax.grid(False)\n",
    "plt.xticks(rotation = 90)\n",
    "# plt.xlabel('Soma Region')\n",
    "plt.ylabel('RT Projection Length',fontsize=20)\n",
    "plt.xlabel('Cluster',fontsize=20)\n",
    "plt.ticklabel_format(axis=\"y\", style=\"sci\", scilimits=(0,0))\n",
    "# plt.savefig('../resource/svg/ConvexHullVolume.pdf',format='pdf',bbox_inches = 'tight')#保存为.svg格式\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1: [869, 998, 0, 379, 153, 103, 898, 531, 1079, 50, 1666, 1479, 667, 1272, 990, 1606, 1693, 1930, 6, 752, 1356, 1007, 1321, 2557, 698], 2: [105, 1039, 679, 0, 83, 342, 6, 130, 373, 526, 712, 1706, 959, 1442, 662, 692, 567, 1411, 293, 791, 1405, 482, 684, 730, 767, 1246, 7, 2892, 24], 3: [63, 0, 221, 358, 758, 86, 0, 811, 361, 1476, 930, 2318, 137, 0, 0], 4: [619, 0, 0, 0, 747, 0, 0, 218, 1570], 5: [0, 1186, 1493, 0, 1638, 3868, 45, 90, 2902, 0, 0, 0, 0, 0, 0, 204, 0, 0, 801, 0, 0, 1220, 0, 0, 0, 0, 1518, 313, 531, 42, 0, 838, 557], 6: [316, 1166, 916, 0, 1060, 212, 0, 0, 1265, 593, 814, 970, 1191, 1448, 1612, 1628, 1488, 0, 3838, 2839, 404, 5146, 1715, 20], 7: [1103, 61, 752, 921, 1258, 314, 6, 681, 58, 0, 496, 0, 893, 379, 1152, 1085, 1252, 799, 0, 0, 0, 1086, 1773, 2266, 1174, 1584, 2718, 2471, 1971, 337, 0, 658, 1959, 0, 1815, 1462, 588, 1037, 1189, 1611, 1643, 640, 1164, 579, 0, 0, 0, 0]}\n",
      "0.96\n",
      "0.9655172413793104\n",
      "0.7333333333333333\n",
      "0.4444444444444444\n",
      "0.48484848484848486\n",
      "0.8333333333333334\n",
      "0.7708333333333334\n"
     ]
    },
    {
     "data": {
      "image/png": "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dm0dOHBADz30kB555BHddNNNCgoKkqenZ6lzDcModsN1AAAAVC6WgmZycrIMw7C9N01Tubm52rFjR6lzDMOQaZrF5gEAAKDysRQ0O3XqRGAEAABAiSzv0QQAAABKYuliIAAAAKA0BE0AAAA4haVD5yX55ZdflJ6ervPnz6t169a2x1QCAACganHIHs2zZ8/qlVdeUb169XT99derbdu26tq1qw4cOFBs3Pz58/XnP/9Zjz32mCOWBQAAgAuzvEfzf//7n3r16qX9+/fLNE3b9pKuRm/Xrp0efPBBmaapIUOG6Pbbb7e6PAAAAFyUpT2aFy5cUGxsrPbt2yd/f3+98MILWrp0aanjIyMj1bVrV0nSl19+aWVpAAAAuDhLezSnTZumvXv3qnr16lqzZo2ioqKuOKdnz55KSkpSSkqKlaUBAADg4izt0Vy0aJEMw9CIESPsCpmS1Lx5c0mXDrkDAACg8rIUNHfu3ClJ6t69u91zatWqJUk6ffq0laUBAADg4iwFzXPnzkmSatSoYfec3NxcSVK1atWsLA0AAAAXZyloFu2dPHjwoN1zfvrpJ0lSeHi4laUBAADg4iwFzRYtWkiSVq9ebfecTz75RIZhqH379laWBgAAgIuzFDTvu+8+maapGTNm6PDhw1ccP3HiRFsoHTBggJWlAQAA4OIsBc2HHnpIzZo104ULF9SlSxd98803l9203TRNrV+/XoMGDdKzzz4rwzDUsWNH9ezZ03LxAAAAcF2W7qPp4eGhL7/8UrfffrsOHjyou+66S/7+/ranAnXp0kVnz561XQBkmqZuuOEGLViwwHrlAAAAcGmWn3Vev359bdmyRQMGDJCHh4dycnJkmqZM09SJEyd04cIF217OP//5z1q3bp1CQ0MtFw4AAADXZvlZ55IUHBysOXPm6I033lBiYqI2bNig48ePq6CgQLVq1VJ0dLR69+6tRo0aOWI5AAAAuAGHBM0i119/vZ544glHfiUAAADc1FUFzcTERC1btkyHDh1SQUGB6tSpoy5duujPf/4zN2IHAACApHIGzYyMDPXt21fr1q277LPZs2drzJgxWrx4sW677TaHFQgAAAD3ZPfFQAUFBbr77ruVmppqu9jn968DBw6oR48eyszMdGbNAAAAcAN2B80FCxZo/fr1MgxDN954o2bNmqXt27dr165dWrhwodq1ayfp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2qTp06frzjvvVOPGjZWYmFjRJdvt4MGDtj2uH330UUWXA6CK4RGUAKq01157TWPGjLG9v/POO3X33XerSZMmqlmzprKysrR792599dVXWrFihfbs2aOXXnpJsbGxFVg1ALgHgiaAKuvDDz+0hczQ0FAtWLBAnTt3vmxcTEyMnnzySe3YsUPPPPOMTpw4ca1LBQC3RNAEUCUdPXpUcXFxkqTq1avr+++/1y233FLmnKZNm+rbb7/V3Llzr0WJAOD2OEcTQJX0zjvv6Pz585Kkf/zjH1cMmUU8PDz04IMP2r3O3//+d9s5kmVJTk62jUtOTi5xzMaNG/XII4+oUaNGql69unx9fVWvXj21bNlSTz75pL788stij7ozDEMNGjSwvR82bJhtjStdKb9p0yY9/vjjuvnmm1WjRg1Vr15dN998s4YPH649e/aU+js++ugj23cfPHhQubm5mjhxotq1a6eQkBCuzgeqGPZoAqhyTNPUxx9/LOnS3szHHnusgiu6snfeeUfPPffcZVe9//LLL/rll1+0adMmTZ06VWfPnlWNGjWuep3CwkI999xzmjhx4mXPZ96zZ4/27NmjDz74QFOmTNFf/vKXMr8rMzNT/fr105YtW666HgDujaAJoMr56aeflJmZKUnq2LGjrrvuugquqGzbtm2zhcwGDRooLi5OUVFRCg4O1tmzZ7V7926tWrVKS5YsKTZv+/btSktLU48ePSRJ//znP9WnT59iY0JDQ4u9/9vf/qapU6dKkjp16qShQ4eqYcOG8vf319atWzVx4kT99NNP+utf/6rw8HDdfffdpdb9yCOPaPv27Ro8eLD69++v8PBwHT58WD4+Po5oCwA3QNAEUOVs3brV9nfLli0rsBL7/Oc//1FhYaGqV6+ulJQUhYWFFfu8Y8eOevTRR3XmzBn5+/vbtjdt2rTY3s26deuqadOmpa6zYsUKW8j84IMP9MgjjxT7vHXr1nrwwQcVGxur7777Tk899ZR69eolL6+S/1Wybdu2y76nRYsW9v9wAG6PczQBVDknT560/f37PXquKD09XZLUqFGjy0LmbwUGBsrD4+r/Z/3NN9+UJN17772Xhcwivr6+mjx5siTp0KFDWrVqVanf161bt1K/B0DVQNAEUOWcPXvW9nf16tUrsBL7RERESJJ+/vlnrVu3zilrZGdn2y5Cuu+++8oc27hxY4WEhEiSUlJSSh03aNAgh9UHwD0RNAFUOb89JzMnJ6cCK7HPgAEDVK1aNeXm5uqPf/yjevfurenTp2vHjh2XXbBztTZv3my70GjAgAGXXZ3++1fROa5Fe1tL0qxZM4fUBsB9ETQBVDm1atWy/Z2RkVGBldjnlltu0bx58xQUFKT8/HwtXbpUw4cP12233abQ0FA99NBDWrNmjaU1jh8/flXzim4RVZKgoKCrLQdAJcHFQACqnObNm9v+3rRpUwVWYr97771XMTExSkhI0Lfffqs1a9boxIkTyszM1GeffabPPvtMQ4YM0ezZs6/qPM2CggLb3++//746dOhg17yywqSnp2e56wBQuRA0AVQ5t956q0JCQpSZmak1a9YoOztbAQEBTlnrt6GvsLCw1BBozyH8wMBA/eUvf7Hdv3Lnzp1asmSJ3nvvPaWlpenjjz9WdHS0RowYUe46f7uX19/fv8yr0wHAXhw6B1DlGIahIUOGSLoU8D744AOnrfXb80FPnTpV6riynrZTmsaNG2vkyJH673//a7uoacGCBcXGXOmJREWioqJsY3/88cdy1wIAJSFoAqiSnnnmGds9J8eMGaNdu3bZNa+wsFBz5syxe53fPgJyw4YNpY6bP3++3d/5e/Xq1VOjRo0kyXaRThFfX1/b37m5uaV+R+3atdWuXTtJ0ty5c3XixImrrgcAihA0AVRJdevWtd0PMicnR507d9b3339f5pyff/5Zf/rTn/TWW2/ZvU6HDh1sNzR/5513SrxK/K233irztkWLFy/W6dOnS/38yJEjtqD822ArXTok7u3tLUnat29fmbW+/PLLki7d6ui+++4rc83c3FxNmTJFFy5cKPM7AVRtnKMJoMoaNmyYfvnlF40ZM0bHjx9Xly5d1L17d/Xp00eNGzdWzZo1lZWVpT179igxMVHLli1TQUFBsYuJriQ0NFT333+/5s2bp2+//VZ33323nnzySYWFhenw4cP69NNP9fnnn6tDhw5au3Ztid8xceJEDRo0SLGxserWrZsaN26swMBAnTp1Shs2bNB7772nX3/9VZL0+OOPF5vr5eWl1q1b68cff9Ts2bMVHR2tqKgoVatWTZIUHBys4OBgSVKvXr00YsQITZo0SatXr1bjxo31+OOP6/bbb1etWrWUk5OjvXv3as2aNVq0aJFOnTplOwUBAEpkAkAV9/nnn5uRkZGmpCu+br31VvPbb78tNr/os7Fjx5b4/enp6eZNN91U6nc+8MAD5sqVK23vV61aVWx+586dr1iXh4eH+dprr5W4/tKlS03DMEqc9/uaCwsLzVdffdX08vK64prVq1c3z58/X2z+hx9+aPv8wIED5fmPAUAlxKFzAFXePffco927d2vOnDl68MEHdfPNNysoKEheXl4KDg5WixYt9MQTT+i7777T9u3b1b1793J9f1hYmFJTU/Xiiy/qpptuko+Pj4KDg9WpUyd99tlnmjdvXpm3Apo3b55mzJihgQMHKioqSuHh4fLy8lKNGjV06623avjw4dq8ebPt0PfvxcbGKikpSX369FGdOnVsezNLYhiGxowZoz179uiFF15Qq1atFBwcLE9PT1133XVq0qSJBg0apI8//ljHjh2Tn59fuXoBoGoxTNNBj5UAAAAAfoM9mgAAAHAKgiYAAACcgqAJAAAApyBoAgAAwCkImgAAAHAKgiYAAACcgqAJAAAApyBoAgAAwCkImgAAAHAKgiYAAACcgqAJAAAApyBoAgAAwCkImgAAAHAKgiYAAACcgqAJAAAAp/h/nDJ/Uz2Kb3gAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 750x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(clusterRTlength)\n",
    "import pandas as pd\n",
    "dataframe=[]\n",
    "indexs=[]\n",
    "for i in range(1,8):\n",
    "    \n",
    "    s = pd.Series(clusterRTlength[i])\n",
    "    ratio  = s[s>0].shape[0]/s.shape[0]\n",
    "    print(ratio)\n",
    "    indexs.append('TH_'+str(i))\n",
    "    dataframe.append(ratio)\n",
    "    # print(s)\n",
    "data = (dataframe)\n",
    "plt.figure(figsize=(7.5, 5)) \n",
    "ax=plt.gca()\n",
    "ax.spines['top'].set_visible(False)\n",
    "ax.spines['right'].set_visible(False)\n",
    "\n",
    "plt.bar(indexs,data,width=0.5)\n",
    "ax.grid(False)\n",
    "plt.xticks(rotation = 90)\n",
    "# plt.xlabel('Soma Region')\n",
    "plt.ylabel('Percent of RT projection',fontsize=20)\n",
    "plt.xlabel('Cluster',fontsize=20)\n",
    "plt.ticklabel_format(axis=\"y\", style=\"sci\", scilimits=(0,0))\n",
    "# plt.savefig('../resource/svg/ConvexHullVolume.pdf',format='pdf',bbox_inches = 'tight')#保存为.svg格式\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "\n",
    "\n",
    "# matplotlib.use('module://matplotlib_inline.backend_inline')\n",
    "# %matplotlib inline\n",
    "rtDilationMask,rtDilationMaskheader = nrrd.read('../resource/rt/rtDilationMask.nrrd')\n",
    "rtDilationMask200,rtDilationMask200header = nrrd.read('../resource/rt/rtDilationMask100.nrrd')\n",
    "def getStreamLine():\n",
    "    iondata = IONData.IONData()\n",
    "\n",
    "    flatenPara=rtFlatmap.createSurfaceGraph()\n",
    "\n",
    "    res,gridpath = iondata.getFileFromServer(\"rtboundaryLaplace-20.nrrd\")\n",
    "    grid,header = nrrd.read(gridpath)\n",
    "\n",
    "    resdv0,dv0Path=iondata.getFileFromServer('rtdv0.nrrd')\n",
    "    dv0,dv0header = nrrd.read(dv0Path)\n",
    "    resdv1,dv1Path=iondata.getFileFromServer('rtdv1.nrrd')\n",
    "    dv1,dv1header = nrrd.read(dv1Path)\n",
    "    resdv2,dv2Path=iondata.getFileFromServer('rtdv2.nrrd')\n",
    "    dv2,dv2header = nrrd.read(dv2Path)\n",
    "\n",
    "    dv0=dv0.astype(np.float32)/1000-1\n",
    "    dv1=dv1.astype(np.float32)/1000-1\n",
    "    dv2=dv2.astype(np.float32)/1000-1\n",
    "    \n",
    "    return grid,dv0,dv1,dv2,flatenPara\n",
    "def rtPathCube(neurontrees):\n",
    "    edges=[]\n",
    "    for neurontree in neurontrees:\n",
    "        for p in neurontree.points:\n",
    "            if p.z>5700:\n",
    "                p.xyz[2]=11400-p.xyz[2]\n",
    "        \n",
    "        for edge in neurontree.edges:\n",
    "            # print(index)\n",
    "\n",
    "            points=[]\n",
    "            for point in edge.data[0:-1:20]:\n",
    "                points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "            point=edge.data[-1]\n",
    "            points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "            out=[]\n",
    "            for point in points:\n",
    "                grid_position = BoundLaplace.FastTrilinearInterpolant(rtDilationMask, point) \n",
    "                if grid_position==10:\n",
    "                    out.append(point)\n",
    "            if len(out)>0:\n",
    "                edges.append(out)\n",
    "    pathcubes = np.zeros(rtDilationMask200.shape)\n",
    "    pInRT =0\n",
    "    for edge in edges:\n",
    "        for p in edge:\n",
    "            isInRT = rtDilationMask200[int(p[0]/5),int(p[1]/5),int(p[2]/5)]/10\n",
    "            pInRT+=isInRT\n",
    "            pathcubes[int(p[0]/5),int(p[1]/5),int(p[2]/5)] = isInRT\n",
    "    return np.sum(pathcubes),len(edges),pInRT\n",
    "    \n",
    "\n",
    "def flatneuron(neurontree,grid,dv0,dv1,dv2,flatenPara,img=None,color=[0,0,255]):\n",
    "    \n",
    "    index=0\n",
    "    newedgesh=[]\n",
    "    newedgesv=[]\n",
    "    minx =99999\n",
    "    maxx =0\n",
    "    for p in neurontree.points:\n",
    "        if p.z>5700:\n",
    "            p.xyz[2]=11400-p.xyz[2]\n",
    "    for edge in neurontree.edges:\n",
    "        # print(index)\n",
    "        index+=1\n",
    "        points=[]\n",
    "        for point in edge.data[0:-1:20]:\n",
    "            points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "        point=edge.data[-1]\n",
    "        points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "        # out=BoundLaplace.ComputeStreamlines(grid,dv0,dv1,\n",
    "        #                                 dv2,copy.deepcopy(points))\n",
    "        out=[]\n",
    "        for point in points:\n",
    "            grid_position = BoundLaplace.FastTrilinearInterpolant(rtDilationMask, point) \n",
    "            if grid_position!=10:\n",
    "                # print(\"not in the boundary range\")\n",
    "                # print(point)\n",
    "                out.append([0,[0,0,0],[0,0,0]])\n",
    "                continue\n",
    "            length,outerpoint,innerpoint = BoundLaplace.CreateStreamline(grid, dv0, dv1, dv2,point[0],point[1],point[2], 0.1)\n",
    "            out.append([length,outerpoint,innerpoint ])\n",
    "        newedgeh = []\n",
    "        newedgev = []\n",
    "        \n",
    "        ii = 0\n",
    "        for p in out:\n",
    "            depth = p[0]\n",
    "            if depth != 0:\n",
    "                if minx>points[ii][0]:\n",
    "                    minx = points[ii][0]\n",
    "                if maxx<points[ii][0]:\n",
    "                    maxx = points[ii][0]\n",
    "                newedgeh.append([points[ii][0],depth,points[ii][2]])\n",
    "                newedgev.append(out[ii][1])\n",
    "            ii += 1\n",
    "        if len(newedgeh)>0:\n",
    "            newedgesh.append(newedgeh)\n",
    "            newedgesv.append(newedgev)\n",
    "\n",
    "    if maxx-minx>0:\n",
    "        plt.subplots(figsize=((maxx-minx)/20,7))\n",
    "        ax = plt.subplot(111)  \n",
    "        ax.spines['top'].set_visible(False)\n",
    "        ax.spines['bottom'].set_visible(False)\n",
    "        ax.spines['right'].set_visible(False)\n",
    "        ax.spines['left'].set_visible(False)\n",
    "        ax.invert_yaxis()\n",
    "        plt.xlim(minx,maxx)\n",
    "        for edge in newedgesh:\n",
    "            \n",
    "            if len(edge):\n",
    "                ax.plot(np.array(edge)[:,0],np.array(edge)[:,1],ls='-',linewidth=0.5,c='k',zorder=0) \n",
    "        plt.yticks([])\n",
    "        plt.xticks([])\n",
    "    if img is None:\n",
    "        img = io.imread(r'../resource/rt/rtflatmap.png')\n",
    "    fig,ax = plt.subplots(figsize=(16,17))\n",
    " \n",
    "    for edge in newedgesv:\n",
    "        prePoint = None\n",
    "        for p in edge:\n",
    "            p2d = rtFlatmap.map2Flatmap(flatenPara,np.array(p)*2,True)\n",
    "            if prePoint is not None and len(p2d)==2:\n",
    "                rr,cc = draw.line(int(prePoint[1]),int(prePoint[0]),int(p2d[1]),int(p2d[0]))\n",
    "                img[rr,cc] = color\n",
    "            if len(p2d)==2:\n",
    "                prePoint =p2d\n",
    "    io.imshow(img)\n",
    "    # for edge in neurontree.edges:\n",
    "    #     points=[]\n",
    "    #     for point in edge.data:\n",
    "    #         points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "    #     ax.plot(np.array(points)[:,0],np.array(points)[:,1],ls='-',c='k',zorder=0)   \n",
    "    # plt.show()\n",
    "\n",
    "def flatneuronSum(neurontree,grid,dv0,dv1,dv2,flatenPara,img=None):\n",
    "    \n",
    "    index=0\n",
    "    newedgesh=[]\n",
    "    newedgesv=[]\n",
    "    minx =99999\n",
    "    maxx =0\n",
    "    for p in neurontree.points:\n",
    "        if p.z>5700:\n",
    "            p.xyz[2]=11400-p.xyz[2]\n",
    "    for edge in neurontree.edges:\n",
    "        # print(index)\n",
    "        index+=1\n",
    "        points=[]\n",
    "        for point in edge.data[0:-1:20]:\n",
    "            points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "        point=edge.data[-1]\n",
    "        points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "        # out=BoundLaplace.ComputeStreamlines(grid,dv0,dv1,\n",
    "        #                                 dv2,copy.deepcopy(points))\n",
    "        out=[]\n",
    "        for point in points:\n",
    "            grid_position = BoundLaplace.FastTrilinearInterpolant(rtDilationMask, point) \n",
    "            if grid_position!=10:\n",
    "                # print(\"not in the boundary range\")\n",
    "                # print(point)\n",
    "                out.append([0,[0,0,0],[0,0,0]])\n",
    "                continue\n",
    "            length,outerpoint,innerpoint = BoundLaplace.CreateStreamline(grid, dv0, dv1, dv2,point[0],point[1],point[2], 0.1)\n",
    "            out.append([length,outerpoint,innerpoint ])\n",
    "        newedgeh = []\n",
    "        newedgev = []\n",
    "        \n",
    "        ii = 0\n",
    "        for p in out:\n",
    "            depth = p[0]\n",
    "            if depth != 0:\n",
    "                if minx>points[ii][0]:\n",
    "                    minx = points[ii][0]\n",
    "                if maxx<points[ii][0]:\n",
    "                    maxx = points[ii][0]\n",
    "                newedgeh.append([points[ii][0],depth,points[ii][2]])\n",
    "                newedgev.append(out[ii][1])\n",
    "            ii += 1\n",
    "        if len(newedgeh)>0:\n",
    "            newedgesh.append(newedgeh)\n",
    "            newedgesv.append(newedgev)\n",
    "\n",
    "    if maxx-minx>0:\n",
    "        plt.subplots(figsize=((maxx-minx)/20,7))\n",
    "        ax = plt.subplot(111)  \n",
    "        ax.spines['top'].set_visible(False)\n",
    "        ax.spines['bottom'].set_visible(False)\n",
    "        ax.spines['right'].set_visible(False)\n",
    "        ax.spines['left'].set_visible(False)\n",
    "        ax.invert_yaxis()\n",
    "        plt.xlim(minx,maxx)\n",
    "        for edge in newedgesh:\n",
    "            \n",
    "            if len(edge):\n",
    "                ax.plot(np.array(edge)[:,0],np.array(edge)[:,1],ls='-',linewidth=0.5,c='k',zorder=0) \n",
    "        plt.yticks([])\n",
    "        plt.xticks([])\n",
    "    if img is None:\n",
    "        img = io.imread(r'../resource/rt/rtflatmap.png')\n",
    "    fig,ax = plt.subplots(figsize=(16,17))\n",
    " \n",
    "    for edge in newedgesv:\n",
    "        prePoint = None\n",
    "        for p in edge:\n",
    "            p2d = rtFlatmap.map2Flatmap(flatenPara,np.array(p)*2,True)\n",
    "            if prePoint is not None and len(p2d)==2:\n",
    "                rr,cc = draw.line(int(prePoint[1]),int(prePoint[0]),int(p2d[1]),int(p2d[0]))\n",
    "                img[rr,cc] = img[rr,cc]+1\n",
    "            if len(p2d)==2:\n",
    "                prePoint =p2d\n",
    "    io.imshow(img)\n",
    "    # for edge in neurontree.edges:\n",
    "    #     points=[]\n",
    "    #     for point in edge.data:\n",
    "    #         points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "    #     ax.plot(np.array(points)[:,0],np.array(points)[:,1],ls='-',c='k',zorder=0)   \n",
    "    # plt.show()\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    import IONData \n",
    "\n",
    "    # grid,dv0,dv1,dv2,flatenPara = getStreamLine()\n",
    "\n",
    "    # iondata =IONData.IONData()\n",
    "\n",
    "    # fig,ax = plt.subplots(figsize=(11,7))\n",
    "    \n",
    "    # neurontree = iondata.getNeuronTreeByID('210662','070.swc')\n",
    "\n",
    "    # rtPathCube([neurontree])\n",
    "    # flatneuron(neurontree,grid,dv0,dv1,dv2,flatenPara)\n",
    "    # plt.savefig('../resource/thsample/rtflatmap/test070.png', format='png', dpi=300)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 不同脑区的神经元"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import IONData \n",
    "iondata =IONData.IONData()\n",
    "def loadClusterCSV(filename,cluster=None):\n",
    "    neurons = pd.read_csv(filename)\n",
    "    neuronsArray= neurons.to_numpy()\n",
    "    neuronScene=[]\n",
    "    for neuron in neuronsArray:\n",
    "        # print(str(neuron[2])[0])\n",
    "        neurondict={}\n",
    "        neurondict['cluster'] = neuron[1]\n",
    "        neurondict['sampleid'] = str(neuron[2])[0:6]\n",
    "        neurondict['name']=str(neuron[2])[6:]+'.swc'\n",
    "        if cluster ==neuron[1] or cluster ==None:\n",
    "            neuronScene.append(neurondict)\n",
    "    return neuronScene\n",
    "import pickle\n",
    "\n",
    "f = open('../resource/cluster_eachNeuron/TH20221208.pckl', 'rb')\n",
    "obj = pickle.load(f)\n",
    "f.close()\n",
    "\n",
    "neuronScene=[]\n",
    "for neuron in obj:\n",
    "        # print(str(neuron[2])[0])\n",
    "        neurondict={}\n",
    "        neurondict['sampleid'] = str(neuron)[0:6]\n",
    "        neurondict['name']=str(neuron)[6:]\n",
    "\n",
    "        neuronScene.append(neurondict)\n",
    "\n",
    "source_regions_sort_index = ['VPM','VPL','VPMpc','VPLpc','LGd','MG','VAL','AM','SMT','MD','LP','PO','LD','VM','RE','CM','TH','ar','CL','Eth','PIL','PoT','SPFp','ZI']\n",
    "regionNeurons={'Other':[]}\n",
    "\n",
    "for regions in source_regions_sort_index:\n",
    "    regionNeurons[regions]=[]\n",
    "for neuron in neuronScene:\n",
    "    property = iondata.getNeuronPropertyByID(neuron['sampleid'], neuron['name'])\n",
    "    if property['somaregion'] not in source_regions_sort_index:\n",
    "        regionNeurons['Other'].append(neuron)\n",
    "        continue\n",
    "    else:\n",
    "        regionNeurons[property['somaregion']].append(neuron)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "len(neuronScene)\n",
    "Scene.createScene(neuronScene,'../resource/rt.nv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "import BrainRegion as BR \n",
    "import numpy as np\n",
    "br = BR.BrainRegion()\n",
    "br.praseJson()\n",
    "rtLength={}\n",
    "for neuron in neuronScene:\n",
    "    property = iondata.getNeuronPropertyByID(neuron['sampleid'], neuron['name'])\n",
    "    \n",
    "    brproperty=BR.RegionProperty(copy.deepcopy(br))\n",
    "    brproperty.setProperty(property['projectregion'])\n",
    "    regionsum = brproperty.getSumProperty('RT')\n",
    "    rtLength[neuron['sampleid']+neuron['name']] = regionsum\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "131 239 0.5481171548117155\n"
     ]
    }
   ],
   "source": [
    "sum=0\n",
    "for neuron in rtLength:\n",
    "    sum+=rtLength[neuron]>430\n",
    "print(sum,len(rtLength),sum/len(rtLength))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 每个神经元在RT脑区内的投射范围"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/003.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/004.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/014.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/015.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/017.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/051.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/055.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/192.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/107.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/023.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/057.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/067.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/068.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/069.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/006.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/007.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/011.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/012.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/014.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/024.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/038.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/040.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/041.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/081.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/034.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/035.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/146.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/206.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/208.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/062.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/080.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/131.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/132.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/022.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/072.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/068.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/154.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/045.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/065.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/066.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/067.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/068.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/069.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/073.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/074.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/075.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/076.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/077.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/078.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/079.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/081.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/082.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/083.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/084.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/086.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/087.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/088.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/089.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/123.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/031.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/074.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/056.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/015.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/028.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/029.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/058.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/059.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/060.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/061.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/207.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/063.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/066.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/073.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/069.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/011.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/012.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/013.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/020.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/023.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/024.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/025.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/026.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/027.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/028.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/029.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/030.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/033.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/076.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/077.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/078.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/079.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/173.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/073.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/070.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/001.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/002.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/003.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/004.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/005.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/008.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/009.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/010.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/017.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/018.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/020.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/021.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/022.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/031.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/032.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/033.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/034.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/036.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/037.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/042.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/043.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/044.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/045.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/180.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/065.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/070.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/042.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/043.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/044.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/045.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/046.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/047.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/048.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/049.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/050.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/053.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/057.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/058.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/060.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/122.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/123.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/124.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/125.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/134.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/136.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/137.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/144.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/168.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/169.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/170.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/171.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/172.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/179.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/197.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/198.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/199.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/200.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/215.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/066.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/067.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/069.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/071.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/072.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/115.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/060.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/066.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/074.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/087.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/001.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/002.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/016.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210098/019.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/013.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/026.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/030.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211984/082.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/165.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/057.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/001.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/055.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/036.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/037.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/070.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/071.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/072.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/091.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/002.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/003.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/005.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/018.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/019.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/030.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/032.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/033.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/056.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/057.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/080.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/081.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/205.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/105.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/106.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/108.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/109.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/110.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/111.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/113.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/064.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/065.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/071.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/052.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/054.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/056.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/132.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/143.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/177.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/068.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/116.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/105.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/106.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/140.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/059.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/130.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/133.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/135.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/166.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/167.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/175.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/176.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210662/117.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/107.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/108.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/109.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/110.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/029.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/058.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/063.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/045.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/059.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/085.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/004.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/006.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/020.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/021.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/027.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/028.swc\n"
     ]
    }
   ],
   "source": [
    "for region in regionNeurons:\n",
    "    for neuron in regionNeurons[region]:\n",
    "        neuronT = iondata.getNeuronTreeByID(neuron['sampleid'], neuron['name'])\n",
    "        cubecount,branchcount,pcount = rtPathCube([neuronT])\n",
    "        neuron['cubecount']=cubecount\n",
    "        neuron['branchcount']=branchcount\n",
    "        neuron['pointcount']=pcount\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "26\n",
      "10\n",
      "26\n",
      "3\n",
      "4\n",
      "0\n",
      "0\n",
      "5\n",
      "0\n",
      "0\n",
      "43\n",
      "3\n",
      "42\n",
      "0\n",
      "0\n",
      "0\n",
      "8\n",
      "6\n",
      "14\n",
      "13\n",
      "8\n",
      "3\n",
      "15\n",
      "3\n",
      "7\n",
      "230\n"
     ]
    }
   ],
   "source": [
    "sum=0\n",
    "for region in regionNeurons:\n",
    "    neurons = regionNeurons[region]\n",
    "    print(len(neurons))\n",
    "    for neuron in neurons:\n",
    "        # print(neuron['pointcount'])\n",
    "        if neuron['pointcount']>0:\n",
    "            sum+=1\n",
    "print(sum)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 各脑区神经元个数最多的样本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Other 211984 10\n",
      "VPM 210726 4\n",
      "VPL 210726 22\n",
      "VPMpc 211984 3\n",
      "VPLpc 210726 4\n",
      "VAL 211181 3\n",
      "MD 211984 23\n",
      "LP 210662 2\n",
      "PO 210661 32\n",
      "CM 210098 4\n",
      "TH 210727 2\n",
      "ar 210727 9\n",
      "CL 210662 7\n",
      "Eth 210661 6\n",
      "PIL 210726 3\n",
      "PoT 210661 8\n",
      "SPFp 210727 2\n",
      "ZI 210727 6\n"
     ]
    }
   ],
   "source": [
    "from collections import Counter\n",
    "regionMaxSample={}\n",
    "for region in regionNeurons:\n",
    "    \n",
    "    samplearray=[]\n",
    "    for neuron in regionNeurons[region]:\n",
    "        samplearray.append(neuron['sampleid'])\n",
    "    number = Counter(samplearray)\n",
    "    result = number.most_common()\n",
    "    if len(result)>=1:\n",
    "        regionMaxSample[region]=result[0][0]\n",
    "        print(region,result[0][0],result[0][1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 各脑区神经元在rt投射范围和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Other 26\n",
      "VPM 10\n",
      "VPL 26\n",
      "VPMpc 3\n",
      "VPLpc 4\n",
      "LGd 0\n",
      "MG 0\n",
      "VAL 5\n",
      "AM 0\n",
      "SMT 0\n",
      "MD 43\n",
      "LP 3\n",
      "PO 42\n",
      "LD 0\n",
      "VM 0\n",
      "RE 0\n",
      "CM 8\n",
      "TH 6\n",
      "ar 14\n",
      "CL 13\n",
      "Eth 8\n",
      "PIL 3\n",
      "PoT 15\n",
      "SPFp 3\n",
      "ZI 7\n",
      "239\n"
     ]
    }
   ],
   "source": [
    "sum=0\n",
    "for region in regionNeurons:\n",
    "    sum+=len(regionNeurons[region])\n",
    "    print(region,len(regionNeurons[region]))\n",
    "print(sum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Other    1356.0\n",
       "VPM       610.0\n",
       "VPL      1648.0\n",
       "VPMpc     114.0\n",
       "VPLpc     319.0\n",
       "VAL       158.0\n",
       "MD       1091.0\n",
       "LP        346.0\n",
       "PO       4330.0\n",
       "CM        118.0\n",
       "TH        354.0\n",
       "ar       1418.0\n",
       "CL       1205.0\n",
       "Eth      1120.0\n",
       "PIL         1.0\n",
       "PoT      1593.0\n",
       "SPFp       93.0\n",
       "ZI        593.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from re import S\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "matplotlib.use('module://matplotlib_inline.backend_inline')\n",
    "%matplotlib inline\n",
    "dataframe={}\n",
    "for region in regionNeurons:\n",
    "    cubecounts=[]\n",
    "    for neuron in regionNeurons[region]:\n",
    "        # if region in regionMaxSample and neuron['sampleid']==regionMaxSample[region]:\n",
    "            cubecounts.append(neuron['pointcount'])\n",
    "\n",
    "    s = pd.Series(np.array(cubecounts))\n",
    "    if s.size>0:\n",
    "        dataframe[region]=s \n",
    "regionSampleCubeCount = pd.DataFrame(dataframe)\n",
    "regionSampleCubeCount.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Other</th>\n",
       "      <th>VPM</th>\n",
       "      <th>VPL</th>\n",
       "      <th>VPMpc</th>\n",
       "      <th>VPLpc</th>\n",
       "      <th>VAL</th>\n",
       "      <th>MD</th>\n",
       "      <th>LP</th>\n",
       "      <th>PO</th>\n",
       "      <th>CM</th>\n",
       "      <th>TH</th>\n",
       "      <th>ar</th>\n",
       "      <th>CL</th>\n",
       "      <th>Eth</th>\n",
       "      <th>PIL</th>\n",
       "      <th>PoT</th>\n",
       "      <th>SPFp</th>\n",
       "      <th>ZI</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>69.0</td>\n",
       "      <td>47.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>54.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>143.0</td>\n",
       "      <td>163.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>64.0</td>\n",
       "      <td>120.0</td>\n",
       "      <td>139.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>360.0</td>\n",
       "      <td>93.0</td>\n",
       "      <td>151.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10.0</td>\n",
       "      <td>145.0</td>\n",
       "      <td>178.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>17.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>141.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>106.0</td>\n",
       "      <td>160.0</td>\n",
       "      <td>155.0</td>\n",
       "      <td>307.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>43.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>164.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>47.0</td>\n",
       "      <td>134.0</td>\n",
       "      <td>142.0</td>\n",
       "      <td>104.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>87.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>126.0</td>\n",
       "      <td>47.0</td>\n",
       "      <td>74.0</td>\n",
       "      <td>230.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>121.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>192.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>11.0</td>\n",
       "      <td>129.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>223.0</td>\n",
       "      <td>29.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>110.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>77.0</td>\n",
       "      <td>202.0</td>\n",
       "      <td>112.0</td>\n",
       "      <td>174.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>102.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>71.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>239.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>81.0</td>\n",
       "      <td>130.0</td>\n",
       "      <td>58.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>250.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>66.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>52.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>140.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>17.0</td>\n",
       "      <td>165.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>61.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>42.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>122.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>67.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>206.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>90.0</td>\n",
       "      <td>130.0</td>\n",
       "      <td>153.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>36.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>150.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>114.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>127.0</td>\n",
       "      <td>67.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>307.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>181.0</td>\n",
       "      <td>81.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>55.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>147.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>103.0</td>\n",
       "      <td>87.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>136.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>34.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>200.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>92.0</td>\n",
       "      <td>93.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>62.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>32.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>220.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>119.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>103.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>85.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>45.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>70.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>144.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>10.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>19.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>107.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>14.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>44.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>205.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>33.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>57.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>18.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>62.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>71.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>129.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>113.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>153.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>41.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>8.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>82.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>91.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>50.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>70.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>107.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>137.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>178.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>8.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>61.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>75.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>87.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>100.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>82.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>133.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>357.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>59.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>128.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>121.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>48.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>171.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>105.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>12.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>141.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>199.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>29.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>107.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>247.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>185.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>135.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>74.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>13.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>128.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>12.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>18.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Other    VPM    VPL  VPMpc  VPLpc   VAL     MD     LP     PO    CM     TH  \\\n",
       "0    69.0   47.0   36.0    4.0   70.0  54.0   42.0  143.0  163.0  62.0    7.0   \n",
       "1    10.0  145.0  178.0    6.0   17.0  14.0    7.0  141.0   80.0  12.0  106.0   \n",
       "2    47.0  134.0  142.0  104.0    9.0  57.0    6.0   62.0   87.0   9.0  126.0   \n",
       "3    11.0  129.0   16.0    NaN  223.0  29.0    3.0    NaN  110.0   9.0   77.0   \n",
       "4    10.0   25.0   71.0    NaN    NaN   4.0   10.0    NaN  239.0   9.0   21.0   \n",
       "5    66.0   19.0   52.0    NaN    NaN   NaN   11.0    NaN  140.0   2.0   17.0   \n",
       "6   122.0   14.0   67.0    NaN    NaN   NaN    9.0    NaN  206.0   9.0    NaN   \n",
       "7   150.0    0.0   16.0    NaN    NaN   NaN   10.0    NaN  114.0   6.0    NaN   \n",
       "8   181.0   81.0   27.0    NaN    NaN   NaN   55.0    NaN  147.0   NaN    NaN   \n",
       "9     0.0   16.0   34.0    NaN    NaN   NaN   14.0    NaN  200.0   NaN    NaN   \n",
       "10   32.0    NaN   27.0    NaN    NaN   NaN   27.0    NaN  220.0   NaN    NaN   \n",
       "11  103.0    NaN   85.0    NaN    NaN   NaN   45.0    NaN   70.0   NaN    NaN   \n",
       "12   10.0    NaN   19.0    NaN    NaN   NaN   11.0    NaN  107.0   NaN    NaN   \n",
       "13   14.0    NaN   44.0    NaN    NaN   NaN  205.0    NaN   33.0   NaN    NaN   \n",
       "14    6.0    NaN   57.0    NaN    NaN   NaN   18.0    NaN   62.0   NaN    NaN   \n",
       "15    7.0    NaN  129.0    NaN    NaN   NaN  113.0    NaN   13.0   NaN    NaN   \n",
       "16    7.0    NaN   21.0    NaN    NaN   NaN  153.0    NaN   41.0   NaN    NaN   \n",
       "17    8.0    NaN   82.0    NaN    NaN   NaN   91.0    NaN    0.0   NaN    NaN   \n",
       "18    2.0    NaN   50.0    NaN    NaN   NaN   70.0    NaN  107.0   NaN    NaN   \n",
       "19    1.0    NaN  137.0    NaN    NaN   NaN   10.0    NaN  178.0   NaN    NaN   \n",
       "20    4.0    NaN   21.0    NaN    NaN   NaN    8.0    NaN    6.0   NaN    NaN   \n",
       "21    8.0    NaN   61.0    NaN    NaN   NaN    8.0    NaN   75.0   NaN    NaN   \n",
       "22    3.0    NaN   87.0    NaN    NaN   NaN    7.0    NaN  100.0   NaN    NaN   \n",
       "23    7.0    NaN   82.0    NaN    NaN   NaN    8.0    NaN  133.0   NaN    NaN   \n",
       "24  357.0    NaN   59.0    NaN    NaN   NaN   17.0    NaN  128.0   NaN    NaN   \n",
       "25  121.0    NaN   48.0    NaN    NaN   NaN    2.0    NaN  171.0   NaN    NaN   \n",
       "26    NaN    NaN    NaN    NaN    NaN   NaN    8.0    NaN  105.0   NaN    NaN   \n",
       "27    NaN    NaN    NaN    NaN    NaN   NaN   12.0    NaN  141.0   NaN    NaN   \n",
       "28    NaN    NaN    NaN    NaN    NaN   NaN    5.0    NaN  199.0   NaN    NaN   \n",
       "29    NaN    NaN    NaN    NaN    NaN   NaN    4.0    NaN   29.0   NaN    NaN   \n",
       "30    NaN    NaN    NaN    NaN    NaN   NaN    9.0    NaN  107.0   NaN    NaN   \n",
       "31    NaN    NaN    NaN    NaN    NaN   NaN    9.0    NaN    9.0   NaN    NaN   \n",
       "32    NaN    NaN    NaN    NaN    NaN   NaN    2.0    NaN  247.0   NaN    NaN   \n",
       "33    NaN    NaN    NaN    NaN    NaN   NaN    6.0    NaN  185.0   NaN    NaN   \n",
       "34    NaN    NaN    NaN    NaN    NaN   NaN    9.0    NaN  135.0   NaN    NaN   \n",
       "35    NaN    NaN    NaN    NaN    NaN   NaN    7.0    NaN   11.0   NaN    NaN   \n",
       "36    NaN    NaN    NaN    NaN    NaN   NaN    9.0    NaN   74.0   NaN    NaN   \n",
       "37    NaN    NaN    NaN    NaN    NaN   NaN   13.0    NaN  128.0   NaN    NaN   \n",
       "38    NaN    NaN    NaN    NaN    NaN   NaN    9.0    NaN    7.0   NaN    NaN   \n",
       "39    NaN    NaN    NaN    NaN    NaN   NaN   12.0    NaN   18.0   NaN    NaN   \n",
       "40    NaN    NaN    NaN    NaN    NaN   NaN    5.0    NaN    0.0   NaN    NaN   \n",
       "41    NaN    NaN    NaN    NaN    NaN   NaN    8.0    NaN    5.0   NaN    NaN   \n",
       "42    NaN    NaN    NaN    NaN    NaN   NaN    4.0    NaN    NaN   NaN    NaN   \n",
       "\n",
       "       ar     CL    Eth  PIL    PoT  SPFp     ZI  \n",
       "0    64.0  120.0  139.0  0.0  360.0  93.0  151.0  \n",
       "1   160.0  155.0  307.0  1.0   43.0   0.0  164.0  \n",
       "2    47.0   74.0  230.0  0.0  121.0   0.0  192.0  \n",
       "3   202.0  112.0  174.0  NaN  102.0   NaN    4.0  \n",
       "4    81.0  130.0   58.0  NaN  250.0   NaN    4.0  \n",
       "5   165.0  206.0   13.0  NaN   61.0   NaN   42.0  \n",
       "6    90.0  130.0  153.0  NaN   40.0   NaN   36.0  \n",
       "7   127.0   67.0   46.0  NaN  307.0   NaN    NaN  \n",
       "8   103.0   87.0    NaN  NaN  136.0   NaN    NaN  \n",
       "9    92.0   93.0    NaN  NaN   62.0   NaN    NaN  \n",
       "10  119.0   11.0    NaN  NaN   17.0   NaN    NaN  \n",
       "11  144.0   14.0    NaN  NaN   14.0   NaN    NaN  \n",
       "12   17.0    6.0    NaN  NaN    9.0   NaN    NaN  \n",
       "13    7.0    NaN    NaN  NaN    0.0   NaN    NaN  \n",
       "14    NaN    NaN    NaN  NaN   71.0   NaN    NaN  \n",
       "15    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "16    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "17    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "18    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "19    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "20    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "21    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "22    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "23    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "24    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "25    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "26    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "27    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "28    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "29    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "30    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "31    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "32    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "33    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "34    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "35    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "36    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "37    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "38    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "39    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "40    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "41    NaN    NaN    NaN  NaN    NaN   NaN    NaN  \n",
       "42    NaN    NaN    NaN  NaN    NaN   NaN    NaN  "
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regionSampleCubeCount"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "170"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rtCubeCount = regionSampleCubeCount>10\n",
    "rtCubeCount.sum().sum()\n",
    "# regionSampleCubeCountc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7112970711297071"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rtCubeCount.sum().sum()/len(neuronScene)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 各脑区神经元个数最多的样本神经元在RT内的投射范围"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "regionSampleAllCubeCount={}\n",
    "for region in source_regions_sort_index:\n",
    "    neurons=[]\n",
    "    for neuron in regionNeurons[region]:\n",
    "        if region in regionMaxSample and neuron['sampleid']==regionMaxSample[region]:\n",
    "            neuronT = iondata.getNeuronTreeByID(neuron['sampleid'], neuron['name'])\n",
    "            neurons.append(neuronT)\n",
    "    cubecount,branchcount = rtPathCube(neurons)\n",
    "    if region in regionMaxSample:\n",
    "        regionSampleAllCubeCount[region]=cubecount"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 各脑区单个样本神经元overlay"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'VPM': 0.95, 'VPL': 0.42424242424242425, 'VPLpc': 0.7446808510638298, 'VAL': 1.0, 'MD': 0.7894736842105263, 'LP': 0.925, 'PO': 0.48091603053435117, 'CM': 1.0, 'TH': 1.0, 'ar': 0.4728682170542636, 'CL': 0.6460674157303371, 'Eth': 0.9055555555555556, 'PIL': 1.0, 'PoT': 0.7441860465116279, 'SPFp': 0.9666666666666667, 'ZI': 0.9047619047619048}\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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K2rZsqUSEhJqVaekpERFRUVuDwAA4Js8CiNHjx5VWVmZwsLC3I6HhYUpPz+/ymvWr1+v+fPna968ebWuk5KSopCQENcjPDzck2YCAIB6xNa7aU6dOqVHHnlE8+bNU2hoaK2vmzRpkk6ePOl65OXl2dhKAABgkkcrsIaGhsrPz08FBQVuxwsKCtSqVatK5//www/at2+fhg8f7jpWXl7+S+EGDfSPf/xD1113XaXrAgMDFRgY6EnTAABAPeVRz0hAQIB69uyprKws17Hy8nJlZWWpb9++lc7v0KGDduzYoa1bt7oed955pwYOHKitW7cy/AIAADzfmyYpKUmjRo1Sr1691Lt3b82ePVvFxcWKj4+XJMXFxalt27ZKSUlRUFCQbrrpJrfrmzVrJkmVjgMAgCuTx2EkNjZWR44c0eTJk5Wfn69u3bpp5cqVrkmtBw4ckNPJwq4AAKB2LmrX3sTERCUmJlb53Jo1a2q8NiMj42JKAgAAH0UXBgAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwKiLCiOpqamKiIhQUFCQ+vTpo82bN1d77rx589S/f381b95czZs3V1RUVI3nAwCAK4vHYSQzM1NJSUlKTk5WTk6OunbtqujoaB0+fLjK89esWaORI0fqiy++UHZ2tsLDwzVo0CAdPHjwkhsPAADqP4/DyKxZszR27FjFx8erU6dOmjNnjho1aqS0tLQqz//ggw/0+OOPq1u3burQoYPeeecdlZeXKysr65IbDwAA6j+Pwkhpaam2bNmiqKiof7+A06moqChlZ2fX6jVOnz6tf/3rX2rRokW155SUlKioqMjtAQAAfJNHYeTo0aMqKytTWFiY2/GwsDDl5+fX6jWef/55tWnTxi3QnC8lJUUhISGuR3h4uCfNBAAA9Uid3k0zY8YMffjhh/r4448VFBRU7XmTJk3SyZMnXY+8vLw6bCUAAKhLDTw5OTQ0VH5+fiooKHA7XlBQoFatWtV47RtvvKEZM2bo888/V5cuXWo8NzAwUIGBgZ40DQAA1FMe9YwEBASoZ8+ebpNPKyaj9u3bt9rrXn/9dU2bNk0rV65Ur169Lr61AADA53jUMyJJSUlJGjVqlHr16qXevXtr9uzZKi4uVnx8vCQpLi5Obdu2VUpKiiTptdde0+TJk7VgwQJFRES45pYEBwcrODjYi28FAADURx6HkdjYWB05ckSTJ09Wfn6+unXrppUrV7omtR44cEBO5787XN5++22Vlpbqvvvuc3ud5ORkTZky5dJaDwAA6j2Pw4gkJSYmKjExscrn1qxZ4/bzvn37LqYEAAC4QrA3DQAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMuKoykpqYqIiJCQUFB6tOnjzZv3lzj+R999JE6dOigoKAgde7cWStWrLioxgIAAN/jcRjJzMxUUlKSkpOTlZOTo65duyo6OlqHDx+u8vwNGzZo5MiRSkhI0LfffqsRI0ZoxIgR+u677y658QAAoP7zOIzMmjVLY8eOVXx8vDp16qQ5c+aoUaNGSktLq/L8//mf/9HgwYP17LPPqmPHjpo2bZp69OihP/3pT5fceAAAUP818OTk0tJSbdmyRZMmTXIdczqdioqKUnZ2dpXXZGdnKykpye1YdHS0li5dWm2dkpISlZSUuH4+efKkJKmoqKjK88tLTtf2LVSputetDWpTm9rUpja1qV3zc5Zl1fwilgcOHjxoSbI2bNjgdvzZZ5+1evfuXeU1/v7+1oIFC9yOpaamWi1btqy2TnJysiWJBw8ePHjw4OEDj7y8vBrzhUc9I3Vl0qRJbr0p5eXlOn78uK666io5HA6PXquoqEjh4eHKy8tT06ZNvd1UalOb2tSmNrWpXQ3LsnTq1Cm1adOmxvM8CiOhoaHy8/NTQUGB2/GCggK1atWqymtatWrl0fmSFBgYqMDAQLdjzZo186SplTRt2rTO/xCpTW1qU5va1L7Sa4eEhFzwHI8msAYEBKhnz57KyspyHSsvL1dWVpb69u1b5TV9+/Z1O1+SPvvss2rPBwAAVxaPh2mSkpI0atQo9erVS71799bs2bNVXFys+Ph4SVJcXJzatm2rlJQUSdLTTz+t2267TTNnztTQoUP14Ycf6ptvvtHcuXO9+04AAEC95HEYiY2N1ZEjRzR58mTl5+erW7duWrlypcLCwiRJBw4ckNP57w6Xfv36acGCBXrppZf0wgsvqH379lq6dKluuukm772LGgQGBio5ObnSsA+1qU1talOb2tS+PGo7LOtC99sAAADYh71pAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRl+Vy8L7m8OHDeuedd/TCCy/YVuPHH3/U2bNn1b59e7fje/bskb+/vyIiImyrXZ29e/fqscce09/+9rc6rw3fcv5mm9WZNWuWbW04e/asFixYoOjoaNdSBpeDwsJCrVixQg8++KDppsAmeXl5kqTw8HDDLbGPz9za+8orr9TqvMmTJ9vcksq2bdumHj16qKyszLYat912m0aPHq1Ro0a5HX///ff1zjvvaM2aNbbVrk5dvG/TNm7cqGXLlqm0tFR33HGHBg8ebLpJtnrvvfdqdV5cXJxX6w4cONDt5/Xr16tnz55q2LCh65jD4dDq1au9Wvd8jRo10q5du3TttdfaWscTV8LvWXW2b9+uXr16qbS01Ouv3a5dO3399de66qqrvP7atXH27FlNnTpVb775pn7++WdJUnBwsJ588kklJyfL39/f6zW3b99eq/O6dOni9do+E0acTqfatGmjli1bVrtVscPhUE5OTh23rG7+smjatKlycnJ0/fXXux3Pzc1Vr169VFhYaFvt6tTVX5Ll5eXKyMjQkiVLtG/fPjkcDkVGRuq+++7TI4884vHmirW1aNEixcbGqmHDhvL391dRUZFee+01TZgwwZZ6VTlz5ow+++wzff/995KkG264Qb/97W/d/pH2JqfTqeDgYDVo0KDG37Pjx4/bUr9CkyZNtG3bNrVr187WOucbMGCAxo8fr7vuuqtO69akrn7PiouLNWPGDGVlZenw4cMqLy93e37v3r221q+Kne/d6XQqPz9fLVu29Ppr18a4ceO0ZMkSvfLKK67tU7KzszVlyhSNGDFCb7/9ttdrOp1OORyOKn+3K447HA5b/n/7zDBNTEyMVq9erV69emn06NEaNmyY20qwvs7hcOjUqVOVjp88edKnvzFZlqU777xTK1asUNeuXdW5c2dZlqVdu3bpd7/7nZYsWaKlS5faUjslJUVjx45Vamqq/Pz8lJKSounTp9dZGPn00081ZswYHT161O14aGio5s+fr+HDh3u9ZseOHVVQUKCHH35Yo0ePtuUb0uXs8ccfV1JSkvLy8tSzZ081btzY7Xlf/v8xZswYrV27Vo888ohat25tW8jHLxYsWKAPP/xQMTExrmNdunRReHi4Ro4caUsY+fHHH73+mrVm+ZCDBw9a06dPt2644QarVatW1nPPPWft3r3bdLOsrVu3Wk6n09Yaw4YNs/7zP//TOnv2rOvY2bNnrXvvvdcaPHiwrbWrUxfvOy0tzWrSpIm1evXqSs9lZWVZTZo0sd59911bajdu3Njas2eP6+eSkhKrQYMGVkFBgS31zvXVV19Z/v7+1r333mtt2LDBOnHihHXixAnrq6++su655x4rICDAys7OtqX2xo0brd///vdWSEiI1bNnT+utt96yTp48aUut6gQHB1s//PBDnda0LMtyOBzVPuz+rFenLn7PLMuyQkJCrPXr19texxN2vneHw2G999571ieffFLjwy5XX321tXPnzkrHd+7caYWGhtpS8/bbb7cWL15c7fNHjhyxIiMjbantM8M051u3bp3S09O1ePFide7cWZ9//rltXdcXmlx35MgRLViwwNYeip07d+rWW29Vs2bN1L9/f0nSl19+qaKiIq1evdqWvYC6d+9e47ej06dPa8+ePba+70GDBun222/XxIkTq3x++vTpWrt2rVatWuX12lV149bV8MGQIUMUHh6uP//5z1U+/+ijjyovL08rVqywrQ1nzpzRRx99pPT0dG3evFkjRoxQWlpaneyfYWqYZv/+/TU+b8dckjfffLPG5w8ePKg33njD9h7QyMhIrVixQh07drS1zrmKiopqfH779u267bbbbBumuRC7hiykX+ZB7t69W+np6a7fqZKSEiUkJKh9+/ZKTk72ek2n0ymn06kXX3xRU6dOrfR8QUGB2rRpY8t79tkwUvEXZWpqqnbs2KH8/Hw1bdrUllrnT66rzhdffGFL/QqHDh3Sn/70J23btk0NGzZUly5dlJiYqBYtWthSr6oPa1Xs+KWp0KpVK61cuVLdunWr8vlvv/1WMTExys/P93ptp9OpV199VcHBwa5jzz//vJ599lmFhoa6jj311FNer92iRQutXbtWnTt3rvL5ir+kT5w44fXa51u3bp2Sk5O1bt06HT16VM2bN/d6jfMn1vXr108LFy7Ur371K7fjdTVMsnPnTh04cMBt4qTD4bBlaCwyMrJW59ndxf7+++/rk08+0bvvvqtGjRrZWqtCxRyG6lg2zmEwPWfk7rvvVlZWlgIDA9W1a1dJv8yRqZgsf64lS5Z4pabT6dSf//xnTZgwQbfffrvef/99t6FIwogHsrOzlZaWpoULF+qGG25QfHy8HnzwQTVr1sx002CDgIAA7d+/X61bt67y+UOHDikyMlIlJSVerx0REXHBcXOHw2HLxL6GDRtq9+7d1X4T379/vzp06KAzZ854vbb0y7fxd999V+np6SouLnbNIenQoYMt9UxOrDvX3r17dffdd2vHjh1u7an4HPja/Kzzez9zc3NlWZYiIiIq3c1hx80Ba9eurdV5t912m9dr+/n56Z///KexMBIfH1/rc9PT071SsyKAHTt2THfddZcCAwP1ySefuHog7QwjPjOB9fXXX1dGRoaOHj2qhx56SF9++WWdTiYrKirSpk2bVFpaqt69e+vqq6+us9oVTpw4ofnz52vXrl2SpE6dOik+Pt62npGaFBUV6YMPPtD8+fP1zTff2FanrKxMDRpU/zH28/PT2bNnbam9b9++Gp//6aefan3Luafat2+v1atXV/sXVlZWVqU1Z7xh4cKFSk9P19q1axUd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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "regionSampleAllCubeCount\n",
    "sampleoverlay={}\n",
    "regioncubesum = regionSampleCubeCount.sum()\n",
    "for i in range(len(regioncubesum)):\n",
    "    sampleoverlay[regioncubesum.index[i]]=regionSampleAllCubeCount[regioncubesum.index[i]]/regioncubesum[regioncubesum.index[i]]\n",
    "print(sampleoverlay)\n",
    "overlayseries = pd.Series(sampleoverlay)\n",
    "overlayseries.plot.bar()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 不同脑区神经元在RT的投射范围分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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lAYAQIOz87g0e0OEJieWqVuLUFcD1ExRUZGuv/56HTt2TK1ataq2ba16Nnfu3Km77rpLb7/9tpo3b/6NivSZNm2aJk2a5P+9oKBA3bp109ixY89YfE2Ulpbq7bff1pgxYxQZGfmN76++uLUuidrqyq21ubUuidrqyo21eb1evfvuu/66Ro4cqfDw8FCX5efGfeazfseX0oaPdMkll+j87u1CXU4At+43t9YlNZ3afCPRNVGrsJmTk6MDBw5o4MCB/m1er1crV67U73//ey1btkxff/21jh49qjZt2vjb7N+/X506dar0PqOiohQVFVVhe2RkZL0+SfV9f/XFrXVJ1FZXbq3NrXVJ1FZXbqktMzNT6enp2rZtmyRp7ty56tmzp+bMmeO6CaJu2WenioiI8P90W20+btxvknvrkhp/bbX5+1pNEPrOd76jDRs2aN26df7/LrzwQt1www3+/4+MjNQ777zj/5tNmzZpx44dGjJkSG0eCgDQAGRmZiotLU2JiYnKzs7WokWLlJ2drcTERKWlpSkzMzPUJQIIsVr1bLZs2VL9+/cP2BYbG6v27dv7t99yyy2aNGmS2rVrp1atWunOO+/UkCFDKp0cBABouLxer9LT05WcnKysrCx5vV4dPnxYgwcPVlZWllJSUjR58mSNHz/eVUPqAIKrTrPRq/P4448rLCxMV199tUpKSnT55ZdrwYIF9f0wABqYoqIi5eXlBWw7XlyiVRu2qm3cR2oRHXg6TUJCApMEXS47O1vbtm3TokWLFBYWJq/X678tLCxM06ZN06WXXqrs7GyNHDkydIUCCKlvHDbffffdgN+bN2+u+fPna/78+d/0rgE0Inl5eRo0aFClt82sZFtOTk7A+eFwn71790pShREvH992XzsATVO992wCQGUSEhKUk5MTsG3T3qOa9NoGzb0mUX06t6nQHu7WuXNnSVJubm6lp0rl5uYGtAPQNBE2AQRFTExMhZ7KsO2HFZVdrL79z9eAHu1DVBnqKikpST179tT06dOVlZUVcFt5eblmzJih+Ph4JSUlhaZAAK5Q52ujAwCatvDwcM2ZM0dLlixRSkqK1qxZo+LiYq1Zs0YpKSlasmSJZs+ezeQgoImjZxMAUGepqanKyMhQenq6hg8f7t8eHx+vjIwM162zCSD4CJsAgG8kNTVV48eP1/Lly7V06VKNGzdO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JgAAABxD2AQAAIBjCJsAAABwDGETAAAAjiFsAgAAwDGETQAAADgmItQFnM7MJEkFBQX1cn+lpaUqKipSQUGBIiMj6+U+64Nb65Kora7cWptb65Kora7cWptb65Kora7cWptb65KaTm2+nObLbdVxXdj86quvJEndunULcSUAAACozldffaXWrVtX28ZjNYmkQVReXq49e/aoZcuW8ng83/j+CgoK1K1bN+3cuVOtWrWqhwrrh1vrkqitrtxam1vrkqitrtxam1vrkqitrtxam1vrkppObWamr776Sl26dFFYWPVnZbquZzMsLExnn312vd9vq1atXPekS+6tS6K2unJrbW6tS6K2unJrbW6tS6K2unJrbW6tS2oatZ2pR9OHCUIAAABwDGETAAAAjmn0YTMqKkq/+tWvFBUVFepSAri1Lona6sqttbm1Lona6sqttbm1Lona6sqttbm1LonaKuO6CUIAAABoPBp9zyYAAABCh7AJAAAAxxA2AQAA4BjCJgAAABzTZMMm86IANGRHjhzRiRMnQl0G4BplZWWSOL67UZMLm0ePHtVXX30lj8fDC7KOysvLQ10CEDR79+7V+vXrQ11GgP379+u6667T7NmzXRs4v/7661CXgCbkk08+0ejRo/3Hd1S0efNmZWRkhOSxm1TY3Lx5s0aNGqUnnnhCR44cIXDWQXl5uf8aqK+88or+9a9/qaioKMRVuc+pgTzUr7EjR44oNzdXW7dubRDPVaj316m2bt2qb3/723rooYf00Ucfhbocv7Zt26p9+/ZaunSp5s+f77rAuWTJEj333HMqLCwMdSloAtavX69hw4bp4osvVsuWLUNdTpV8n22nfsYF6/OupKREb731lq699lq9+uqrQXnMUzWZsOn1ejVr1iytX79eK1as0PPPP++awNmQegp9QXPq1KmaOnWqcnNzVVJSEpJavF5vSB63Or6a9u/f79/m8XhC9hzn5uZq9OjR+p//+R/169dPv/zlL/X555+HpJbK7Ny5UxkZGZo6daoee+wxrVq1ylU9YuvXr1dhYaH++c9/atasWfr4449DXZK8Xq+aNWum5557Tv369dNrr72mBQsWuCZwrl+/XmlpaWrZsqWaN28e6nIk/Xd41a2qOwaF+vjkdhs3btTQoUM1ceJEzZw5M9TlVKm8vNzf41pcXOzfHozjw+bNm3XVVVfp6quv1r333qsf//jHWrRokaOPWYE1IatWrbJOnTrZoEGDbPDgwTZnzhw7cuSImZmVl5cHtZYdO3bYq6++6v/d6/UG9fG/iaeffto6duxoH3/8sX399ddBfext27bZxIkT/b+XlZUF9fGr88UXX9i0adPswgsvtLi4OBszZow9+eST/tuD/RyvX7/eYmNj7a677rI333zTpk6das2bN7cHHnjASktLg/6ar6y+c845x0aMGGG9evWybt26mcfjsV/84he2YcOGkNZ2qjvuuMNuvvlmO/vss+273/2uffzxx6EuyUpKSvz/P3DgQEtISLA5c+ZYcXFxCKsy++ijjywjI8PuueceMwv+52pltmzZYtOmTbONGzeGupRq+T5L169fb2+99ZZ98MEH/ttCdXzwfb669fi0fv16i4uLs06dOtn+/fv9293wujvVqfXMmDHDRowYYd/97ndtwoQJjh/D1q9fb61btzaPx2Pr1683M7OpU6daZGSkLVy40NHHPlWTCJvl5eVWVlZmxcXFNnHiRJs/f77ddddd/g/oYAfOsrIy++EPf2jnnXeevfzyy/7tbn1Dn+62226zX/ziF2b23w+jYOy78vJye+aZZ6xbt27285//3L+9ujdrsJ7Tf//733bOOefYj370I5s8ebL93//9nw0YMMA6depkN998c9DrycvLs1atWtn//u//Bmy/9tpr7dvf/rYVFhYGpY6qbN682dq3b2/33XefHTx40MzMdu7cabNnzzaPx2PXXnutffHFFyGtsayszMrLy+2hhx6yW265xbZu3Wq9evUKSeDctGmTZWRkmFnga2jevHnWpk0bu/zyy+3iiy+22bNnhyxwnjhxwvr06WMej8dSU1Ndc8D/y1/+Ys2aNbOJEyfa559/HupyAjzzzDN2yy23+H9ftGiRPzz17dvXbr31Vv9twT4+7NixwwYMGGDbt28PyeOfySeffGLR0dF28803W1xcnF155ZW2ZcuWUJdVwan7bc6cOdayZUt76KGHbMKECdarVy9LTEy0nTt3VmhbH3z76LbbbrPExER7/fXX/bf98pe/DGrgbNRhs6CgwL788ksz++8H9G9/+1sbNGiQmZ1M9/369QtJ4MzPz7err77akpKS7MUXX/RvP/3F5pYPbJ+vv/7aLr74Yvvxj3/s3+ar8euvv7YNGzYE9LrUt2PHjtn8+fPt/PPPD/iQPj1wer3eoO27devWWWxsrE2dOtUKCgr82w8ePGh33XWXderUye6+++6g1OIzc+ZM83g89tRTT9nBgwf9+2L69Ok2cODAgF6AYCsrK7O7777bfvSjH5mZWWlpqZn997X/9NNPm8fjsblz55pZcN8De/futX//+98Br6evvvrKzj77bPvLX/5iO3futO7du9sVV1wRtMBZVlZms2bNMo/HY3/605/823/7299a27Zt7f333zczs5/97Gd28cUX2+OPP25FRUVBqe1027dvt2HDhln37t3t008/DUkNPgcOHLC1a9favn37bNmyZda1a1f73//934DAeepry+v1+o8XwVBcXGwPP/yw9enTxyZNmmQFBQX2ne98x1566SXLy8uzJ554whITEy0tLS2gxmDJz8+3xMRE6927d43CUDDfp5s2bbKoqCibOnWqmZl9+umn1qpVK7vyyitt69atQaujNlauXGm33Xab/fWvf/Vv2759u1188cU2cODAen+8devWWXR0tN13331mZtalSxd74oknAtoEM3A22rC5ceNGO//8823cuHH21ltv+cOkmdnw4cP9O92X+OfNm+f4B82RI0dsx44d/m9fe/futauuuqpC4PS9aUtKSuzxxx+3zMxMR+uqSlUfLNOnT7e+ffvaypUrA7Zv2rTJrrvuOseGQH0BoKCgwJ544okqA2dJSYlNnTrVP5TnpC1btlhMTIxNmTIloAbfkNjBgwftBz/4gcXHx9vatWsdr+dUU6dOtR49etisWbPMzOzw4cPWunVr+81vfhPUOiqTlJRkt99+e5W3//jHP7bOnTsH9eC/efNmi4yMtISEBLvqqqvss88+sz179piZ2WOPPWY33XSTmZl99tln1q1bN7vyyivtww8/dLSm3Nxce+SRR6y4uNimTZtmkZGRtmzZMps5c6a1a9fO3nrrLX/bEydO2C9+8Qv71re+Zb///e8dretUeXl5tnbtWv/nwc6dO61///524YUX2o4dO4JWx6k+/fRTGzp0qI0ZM8auuuoqMzN76aWXKg2cZic/M+666y771a9+FdRTgw4fPmyzZ8+2xMRE+8EPfmDXXXed/zVfVFRkL7/8svXr1y+ogfPYsWNmdvI4tHXrVktKSrIePXpUGThLS0vt+PHjjtZ0updeesl/ipLvM9dtgXPTpk321VdfmZnZP/7xD0tMTLROnTr5vxz69qPv8+S5556rt8fOycmxli1b2r333uvfdskll9gjjzxiZoFfDH75y19abGxsvT5+ZRpl2PR6vXbzzTebx+Oxb3/729axY0e79dZb7f777zczs0ceeSRgaPOOO+6ws88+2+bPn+/Yt7Pc3FwbPHiw9ezZ05o1a2YPP/yweb1e2717t40fP96GDx8eEDiLi4vt9ttvN4/HY5s2bXKkpuqc+oGSm5trH374oZ04ccLMTn5jGjJkiF177bX2zjvvmNnJA8yVV15pw4YNq9dzUAoLCwN6aXx1VRU4CwsLbcKECRYVFeU/P8VJjz/+uHXs2NEeeOABf4/u6acWbN682aKjo+2pp55yvJ5TH9/MbPLkyXbOOefYAw88YF27drU77rjDf1uoes1LSkqsf//+/t7eU+v11fTcc89Zu3btbNeuXUGra9myZebxeGzw4MF28cUX29ChQy0lJcUyMzPtnXfesU6dOtnq1avN7OSBJDY21q699lr/+6K+rVu3zjwej02fPt2/bcqUKebxeCwiIsL++c9/+rf79uGJEyfsrrvuCtopCK+//rr17NnT+vbta9HR0faTn/zE9uzZYzt27LB+/frZRRdd5A8pwZKbm2tt2rSxe++917Zv3+7vOTcze/nllysEztLSUrvzzjvN4/E43lvte32Xl5f7P8uOHz9us2fPtnPPPdd69uwZ0N4XOM8//3wbO3aso7WZnfxyHBcXF/BZtWXLlioDZ0lJid144402YMAA/2knoeB7jj/77DNXBM4nnnjC4uLi/F+2tm7daj/96U8tOjraJk2aFND26NGj1r9/f5s5c2a9PPbhw4etffv2FR4nJSXFbrjhBjOrOBL4y1/+0tq3b+//ouGERhk2zU6Gn7S0NLv22mvt7rvvtueff97OP/98S05Otp/85Cfm8Xhs8eLF/vZTpkxx7MXpG2a9++677YUXXrApU6ZYeHi4Pf7442Z28tyYlJQUf+D8+uuvbeLEiRYbG2s5OTmO1FRTU6dOtU6dOlmbNm2se/fudt9999mxY8csOzvbxo0bZ+3bt7dzzjnHzj33XBs4cKC/V6A+vn1//vnn1qdPH/vFL37hP1/tVKcHztLSUktPT7eYmBjH91t+fr7985//NK/Xa48++qhdeOGFNnnyZH/wOPXfX1paat27dw8IDfXt9PP0Tv0wmTJlikVGRtqll17qHz4P9kFh165d9uqrr9orr7xin376qT300EPWsWNHW7dunb/NqQfghQsXWv/+/QNGJJziG27dvXu3/etf/7IePXrYQw89ZP/3f/9nCxYssI4dO/q/+N14443+8123bNlimzdvdqSmTz/91KKjo+1Xv/pVhdumT59uHo/HXnvttYDtp4aqYFi2bJm1adPGnn76aSspKbF//OMf5vF47LrrrrOdO3f6z/nr3bt30L40HD582IYNG1bhXOWqAuenn35qEydOtOjo6KCdFrF3717bu3evmZm99tpr9qc//ckKCwtt1qxZ1q5dO7vtttsC2hcVFdmzzz5rQ4YMcTy4l5eX25QpUywqKsqef/55//ZTA6fvuSwqKrI77rjDWrZsGTCZyen6qnJ64ExNTXXs/Vmdp556ypo1a2Z//vOfzey/Ne/YscN+/vOfW2JiYkCwLC0ttcTERPvtb39bL49fUlISMOLiOxbcdNNNdsUVV1RoP2fOHPvwww8dH0VqVGHz9GFqX6/hmDFjbNGiReb1em3+/Pn+b7H/+Mc/HK/ps88+s4iICHvggQcCtqekpFifPn38B9Ndu3ZZSkqKjRo1yi699FKLjo4OSdA8NSRlZmZat27dbMmSJbZ582Z74IEHbPDgwXbLLbdYQUGB7dmzx1auXOkf6ve9qOvroPfUU09Zy5Yt7dlnn7W2bdvaT3/6U/+QsM+RI0fsiSeesIEDB9pZZ50VlP22e/dui4uLs29961v217/+1bxerz3yyCP+wHl6D2dOTo5deOGFFU47qC+7du2ya665xv71r38FbD81cN53333Wo0cPe/zxx+3QoUOO1FEV36zzc88918LDw61///72gx/8wPr372+pqamVntt322232ZVXXun4uYeVDbc+//zz1q1bN7v77rvt6NGjtnPnTnvuueds6NCh9sorr5iZs6sgbNiwweLi4qxv377+bacP7YZiNumpjh07Zrfeeqs9/PDDZnZyJYZevXpZWlqatW7d2q688krbtm2bbdu2zYYMGRK0ntZPP/3UevXqZStWrKj0/Hffgf+VV16xbt26WY8ePYLypd5XS3FxsX+k7ZlnnjGPx2MvvfSSmZ38LJs1a5b179/f7rrrroC/Ly4udrTXadeuXbZ48WJ79dVX7d1337Xf/e53FhYWVmXg/OKLL2zKlClBPU75nrtVq1bZggUL7L777rP169fb0aNH/W1ODZwej8euv/76oH4Je/bZZ61Zs2YBE3HMTn4JMju5msqtt95qZ599tqWmptq0adPsqquust69eztWp++zatasWTZ8+HAz++++fPDBB83j8di///1vRx77VI0mbFY1TL1r1y4bP368XXrppQE9AcEYmj527Ji98sor5vF4/Odd+l5QkydPtmHDhllBQYH/xbB7924bPXq0derUKaDHJxReeuklmzNnjj366KMB2//whz9Yv379qjy/oz4Owr7ZyV9++aX16NHDsrKybOfOnfbII4/YkCFD7MILL7Qnn3zS/xwWFhbanDlzbNCgQUHZb8uXL7ewsDC76KKLLDk52f7yl79UCJynDq2mp6fbiBEj7MCBA47Us3XrVhsyZIh973vfs/feey/gttOH1Hv37m2PPvqofx87bf369RYTE2NTp0613bt329///ne7/PLLbfjw4fbDH/7Q2rVrZ0OHDrWlS5faoUOHLC8vz+655x5r2bKl48sfVTfc+tJLL1mXLl1swoQJ/t6kYPQGr1u3zmJiYmzkyJHWpUuXgB66yoa+YmNjAwJBsJSUlNif//xn27Jlix0+fNguuOAC/+ksCxcuNI/HY+PGjbNdu3YF9WD/pz/9ySIiIvzPVWUjLIWFhbZr1y574403rGfPno6fbuOrYdOmTbZx40Zbv369RUVFWXh4uP3ud78LaHv48GGbOXOm9evXr8IwqFN8XwYTEhIsIiLCzj33XPu///s/e/zxx83j8QSc3rVlyxa77LLLzOPxWPPmzYPeIfLaa69Zy5YtbdiwYfbtb3/b2rVrZ/fdd1/AqKTvfZKXl2d5eXlBq23t2rXm8Xgq9KqnpqbaT3/6U//7YOfOnfaLX/zC2rRpY8OHD7c//vGPFWp3wgsvvGBnnXWWvwfzwQcftObNm9tHH33k2GOeqlGEzZoOUyclJQV8MDt5ovWXX35p7du3t7/+9a82a9Ysi4iI8L+odu3aZa1atQroNvfVsn///qCep1aZ48eP2znnnOMfNjzdtddea4MHD3bksY8cOWLt27f3P0+zZ8+2m266KeBA7xvSb926tc2YMcM/SSIYQ64+N998sw0YMMCuvvpqGzFihGVlZVUInGYnhzzbtGnj+DfHzZs323e/+127/PLLAwLnqUPTZmbf/e53bejQof5v2k7asWOHxcXF2TXXXBOwfcGCBdauXTvbs2ePLViwwAYNGmQej8c6dOhgiYmJdt5559knn3ziaG01HW71Bb5gDMetXbvWIiMj7aGHHrKysjJ7+umnLS4urtrAOWHCBOvYsaOjvV5V8Z268fLLLwcM8S5atMhGjhxpPXr08C+bEyzvv/++NW/evNLTbnx+97vf2ZgxY8zMAlaPcILvvffJJ59YTEyMzZs3zw4ePGhhYWEWFhZmd955p38Sms/hw4dtzpw51rlzZ8cnOVb2ZfA73/mO/4v7/fffXyFwbty40W666aagnBN/qk2bNlnXrl3t+eef948ezZ49284//3x78MEH/ZNxzEKz/nJOTo7dcMMNdt555/lnnF999dXWr18/27Ztm5n99wvrrl277NZbb7XRo0f7c4qZs5nkH//4h3Xs2NFKS0vt17/+dVCDplkjCJu1Haa+7LLL7Omnn3a8rpKSErvyyivtmmuuscLCQps6dapFRUXZvHnzLD4+PuC8nOq+hYfKnj177LLLLrNu3bpV+FCZN2+eDR8+3JH1/EpKSiwlJcWuueYaKykpseXLl1vHjh394eOWW26xTp062apVq+wPf/iD9enTxxITE4MSnszM32P5xhtv2E9+8hNbtmyZpaam2tChQwOG1IcMGWL9+vWzqKiooL2hqwqcZid7c6ZNm2Y//elPgzakmZ+fbxdddJFdeeWVlp2d7d/+1ltvWZs2bfyLbOfn59uyZcvs2WeftZUrV9q+ffscr602w63du3e3m266yfEJBytWrAgIlkePHq1R4AzlMlZmJydc9u/f399jcs8999iTTz4Z9As+mJ38nO/YsaN/GN/n1C+r6enpNmXKlIDn2Qm+15Wvt3ratGn+2/bu3WurV6+28PBw+/nPf14hcBYVFdn8+fMdXTeyqi+DTz/9tLVo0cI2bdpkpaWl9sADDwQM95eXlwflufWd571w4ULbsGGDbdu2zXr06GGffPJJwPPmW5khVGuonvp+zMvLs5tuusnOPfdcu+CCC2zgwIEBr0Oz/74W8/Pz7dZbb7VLL73U0fP5fbZv3259+vSx8ePHW7NmzYIaNM0aeNis7TD1rl27bNSoUfa9730v4DwPpzz55JPWrl07/0Fq6tSp5vF4bMSIEQGzEt2gsqC7d+9eGzBggCUmJtp7771nBw8etIKCAktKSrKUlBTHajl9v91+++12/fXX29VXX21nnXVWwIn8n3/+ueMH2x07dlRYfurAgQOWkJBgv//97+3AgQOWmppqw4YN8wfOe++9184999ygnw5RWeAsKSmxO+64wzweT8jqGTt2rH322Wf21VdfWYcOHfzr44VKbYZbX3/9devbt29QQrCPr65jx45VGjiDPRmoOh9//LFFRUXZ0KFD7Tvf+Y61atUq6L1ep/rLX/5iUVFR9qMf/SjgfGDfF64ePXo4fhqV7/Xk6zn0LUHj2/7GG29YcXGxvfXWWxYWFma333677d6928xOjoYsWrTI0frMqv8y2L59e/9ozPHjx+1Xv/qVeTyeoNRlVvE874SEBLvtttusd+/e/uf01AtTdOvWzb8ubzD94x//sLvvvtuuvvpqW7x4sRUWFtrWrVvt5ptvttatWwcsQXbqsd73/9u3b7frr7/exowZ4/gEnR07dpjH47FmzZqF5DS9Bhs26zpMvWfPnqDM6PO54IIL7LrrrvP//tBDD4X0xP5TLV++PODcy6oC58CBAy0mJsa/FtxFF13kH8aoz7B86n0NHDjQrr32WjMze/PNN/0TJj777LN6f9zq7Nixw9q3b28ej8euuOIKW7x4sf9A9be//c2SkpLswIED9tlnn1lqaqqNGjXK/vznP1t5eXnQJ+L4nBo4ly9fblOnTg3qbNvK6hk3bpyNGDHC2rZtG3C50VD15td2uDUYX06rcmrgDPbFAWpq1apV9sMf/tAmTJhgubm5Ia3F6/XaU089ZREREZaQkGA33XSTf8KZ7zK7weDrOfR9jvn8+te/tq5du/r305tvvmlRUVGWnJxs11xzTVDPhazpl8GvvvrKHn30Uf/nr5NOH9pfsmSJjR071i666CLr2rWrnX/++QHtjx07ZhdccEHQj6lPP/20tWrVyv7nf/7H4uPjLTo62u6//34rLy+3f//733bLLbfYueee65+VblZ54Ny5c6d/dQInlZWV2a9//euQXba1wYZNtw1Tn77Wnq/nYebMmTZw4MCALv5QnthvdnJ/FBcX27hx4+yiiy7yD4+YBe4j337bt2+fjRkzxmJiYvwL0ppVnCFbF2fab751ysaMGROUdeZOt23bNrvwwgttyJAhNnDgQPvpT39qPXr0sKefftoWL15sycnJ/lUNPv30Uxs9erRd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",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from re import S\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "matplotlib.use('module://matplotlib_inline.backend_inline')\n",
    "%matplotlib inline\n",
    "dataframe={}\n",
    "for region in source_regions_sort_index:\n",
    "    cubecounts=[]\n",
    "    for neuron in regionNeurons[region]:\n",
    "        cubecounts.append(neuron['cubecount'])\n",
    "\n",
    "    s = pd.Series(np.array(cubecounts))\n",
    "    if s.size>0:\n",
    "        dataframe[region]=s \n",
    "data = pd.DataFrame(dataframe)\n",
    "plt.figure(figsize=(8, 8)) \n",
    "data.boxplot()\n",
    "plt.xticks(rotation=45)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/146.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/206.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210661/208.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/062.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/080.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/131.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210726/132.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/210727/022.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211181/072.swc\n",
      "exist  d:\\project\\python\\neuron-vis\\figures/../neuronVis/../resource/swc/211986/068.swc\n"
     ]
    },
    {
     "ename": "ValueError",
     "evalue": "too many values to unpack (expected 2)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32md:\\project\\python\\neuron-vis\\figures\\rtFlatNeuron.ipynb 单元格 21\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      <a href='vscode-notebook-cell:/d%3A/project/python/neuron-vis/figures/rtFlatNeuron.ipynb#X22sZmlsZQ%3D%3D?line=4'>5</a>\u001b[0m     neuronT \u001b[39m=\u001b[39m iondata\u001b[39m.\u001b[39mgetNeuronTreeByID(neuron[\u001b[39m'\u001b[39m\u001b[39msampleid\u001b[39m\u001b[39m'\u001b[39m], neuron[\u001b[39m'\u001b[39m\u001b[39mname\u001b[39m\u001b[39m'\u001b[39m])\n\u001b[0;32m      <a href='vscode-notebook-cell:/d%3A/project/python/neuron-vis/figures/rtFlatNeuron.ipynb#X22sZmlsZQ%3D%3D?line=5'>6</a>\u001b[0m     neurons\u001b[39m.\u001b[39mappend(neuronT)\n\u001b[1;32m----> <a href='vscode-notebook-cell:/d%3A/project/python/neuron-vis/figures/rtFlatNeuron.ipynb#X22sZmlsZQ%3D%3D?line=6'>7</a>\u001b[0m cubecount,branchcount \u001b[39m=\u001b[39m rtPathCube(neurons)\n\u001b[0;32m      <a href='vscode-notebook-cell:/d%3A/project/python/neuron-vis/figures/rtFlatNeuron.ipynb#X22sZmlsZQ%3D%3D?line=7'>8</a>\u001b[0m regionCubeCount[region]\u001b[39m=\u001b[39mcubecount\n",
      "\u001b[1;31mValueError\u001b[0m: too many values to unpack (expected 2)"
     ]
    }
   ],
   "source": [
    "regionCubeCount={}\n",
    "for region in source_regions_sort_index:\n",
    "    neurons=[]\n",
    "    for neuron in regionNeurons[region]:\n",
    "        neuronT = iondata.getNeuronTreeByID(neuron['sampleid'], neuron['name'])\n",
    "        neurons.append(neuronT)\n",
    "    cubecount,branchcount,pcount = rtPathCube(neurons)\n",
    "    regionCubeCount[region]=cubecount"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "VPM      114.0\n",
       "VPL      329.0\n",
       "VPLpc     47.0\n",
       "VAL       44.0\n",
       "MD       231.0\n",
       "LP        65.0\n",
       "PO       778.0\n",
       "CM        30.0\n",
       "TH        67.0\n",
       "ar       229.0\n",
       "CL       235.0\n",
       "Eth      221.0\n",
       "PIL        1.0\n",
       "PoT      288.0\n",
       "SPFp      30.0\n",
       "ZI        85.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'VPM': 98.0,\n",
       " 'VPL': 151.0,\n",
       " 'VPMpc': 0.0,\n",
       " 'VPLpc': 35.0,\n",
       " 'LGd': 0.0,\n",
       " 'MG': 0.0,\n",
       " 'VAL': 43.0,\n",
       " 'AM': 0.0,\n",
       " 'SMT': 0.0,\n",
       " 'MD': 167.0,\n",
       " 'LP': 57.0,\n",
       " 'PO': 357.0,\n",
       " 'LD': 0.0,\n",
       " 'VM': 0.0,\n",
       " 'RE': 0.0,\n",
       " 'CM': 30.0,\n",
       " 'TH': 57.0,\n",
       " 'ar': 101.0,\n",
       " 'CL': 136.0,\n",
       " 'Eth': 199.0,\n",
       " 'PIL': 1.0,\n",
       " 'PoT': 188.0,\n",
       " 'SPFp': 29.0,\n",
       " 'ZI': 70.0}"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regionCubeCount"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 各脑区所有神经元overlay"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'VPM': 0.8596491228070176, 'VPL': 0.45896656534954405, 'VPLpc': 0.7446808510638298, 'VAL': 0.9772727272727273, 'MD': 0.7229437229437229, 'LP': 0.8769230769230769, 'PO': 0.4588688946015424, 'CM': 1.0, 'TH': 0.8507462686567164, 'ar': 0.4410480349344978, 'CL': 0.5787234042553191, 'Eth': 0.9004524886877828, 'PIL': 1.0, 'PoT': 0.6527777777777778, 'SPFp': 0.9666666666666667, 'ZI': 0.8235294117647058}\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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J80EAAANiO1301RUVKh169Z666231KdPH8XFxen555/X3Llza7xm8uTJOnHihOuRn59vdzMBAIAhHs0ZCQ0NlZ+fnwoLC92OFxYWqk2bNtVe07ZtW/n7+8vPz891rHPnziooKFBZWZkCAgKqXBMYGKjAwEBPmgYAABooj3pGAgIC1KdPH2VnZ7uOVVRUKDs7W1FRUdVec+ONNyovL08VFRWuY999953atm1bbRABAACXF4+HaZKTk/X222/r3Xff1a5du/TII4+opKTEdXdNfHy8Jk+e7Dr/kUce0bFjx/Tkk0/qu+++07JlyzRjxgw99thj3nsXAACgwfL41t64uDgdPnxYU6ZMUUFBgXr27KkVK1a4JrXu379fTue/M054eLhWrlypCRMmqHv37mrfvr2efPJJPfvss957FwAAoMHyOIxIUlJSkpKSkqp9bs2aNVWORUVFadOmTRdSCgAA+LgLCiMAAHtFTFp2UdfvmzncSy0B7MdGeQAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwqpHpBjR0EZOWXdT1+2YO91JL4Ov4rAHwVfSMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjuJsGAGrAHUxA/aBnBAAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABh1QWEkLS1NERERCgoKUv/+/bV58+Y6Xffhhx/K4XBo1KhRF1IWAAD4II/DSFZWlpKTk5WSkqLc3Fz16NFDMTExOnToUK3X7du3TxMnTtTAgQMvuLEAAMD3eBxGZs+erfHjxyshIUFdunTR3Llz1aRJE6Wnp9d4TXl5ue677z5NmzZNHTp0uKgGAwAA3+JRGCkrK9OWLVsUHR397xdwOhUdHa2cnJwar3vppZfUunVrJSYm1qlOaWmpiouL3R4AAMA3eRRGjhw5ovLycoWFhbkdDwsLU0FBQbXXbNiwQfPmzdPbb79d5zqpqakKCQlxPcLDwz1pJgAAaEBsvZvm5MmTeuCBB/T2228rNDS0ztdNnjxZJ06ccD3y8/NtbCUAADCpkScnh4aGys/PT4WFhW7HCwsL1aZNmyrnf//999q3b59GjhzpOlZRUfFL4UaN9I9//EPXXHNNlesCAwMVGBjoSdMAAEAD5VHPSEBAgPr06aPs7GzXsYqKCmVnZysqKqrK+Z06ddKOHTu0detW1+O2227T4MGDtXXrVoZfAACAZz0jkpScnKyxY8eqb9++6tevn+bMmaOSkhIlJCRIkuLj49W+fXulpqYqKChIXbt2dbu+RYsWklTlOAAAuDx5HEbi4uJ0+PBhTZkyRQUFBerZs6dWrFjhmtS6f/9+OZ0s7AoAAOrG4zAiSUlJSUpKSqr2uTVr1tR6bWZm5oWUBAAAPoouDAAAYBRhBAAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFEXFEbS0tIUERGhoKAg9e/fX5s3b67x3LffflsDBw5Uy5Yt1bJlS0VHR9d6PgAAuLx4HEaysrKUnJyslJQU5ebmqkePHoqJidGhQ4eqPX/NmjUaPXq0Vq9erZycHIWHh2vIkCE6cODARTceAAA0fB6HkdmzZ2v8+PFKSEhQly5dNHfuXDVp0kTp6enVnv/BBx/o0UcfVc+ePdWpUye98847qqioUHZ29kU3HgAANHwehZGysjJt2bJF0dHR/34Bp1PR0dHKycmp02ucOnVK//rXv9SqVasazyktLVVxcbHbAwAA+CaPwsiRI0dUXl6usLAwt+NhYWEqKCio02s8++yzateunVugOVdqaqpCQkJcj/DwcE+aCQAAGpB6vZtm5syZ+vDDD/Xxxx8rKCioxvMmT56sEydOuB75+fn12EoAAFCfGnlycmhoqPz8/FRYWOh2vLCwUG3atKn12tdee00zZ87U559/ru7du9d6bmBgoAIDAz1pGgAAaKA86hkJCAhQnz593CafVk5GjYqKqvG6V199VdOnT9eKFSvUt2/fC28tAADwOR71jEhScnKyxo4dq759+6pfv36aM2eOSkpKlJCQIEmKj49X+/btlZqaKkl65ZVXNGXKFM2fP18RERGuuSXBwcEKDg724lsBAAANkcdhJC4uTocPH9aUKVNUUFCgnj17asWKFa5Jrfv375fT+e8OlzfffFNlZWW6++673V4nJSVFU6dOvbjWAwCABs/jMCJJSUlJSkpKqva5NWvWuP28b9++CykBAAAuE+xNAwAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwKgLCiNpaWmKiIhQUFCQ+vfvr82bN9d6/kcffaROnTopKChI3bp10/Llyy+osQAAwPd4HEaysrKUnJyslJQU5ebmqkePHoqJidGhQ4eqPX/jxo0aPXq0EhMT9c0332jUqFEaNWqUvv3224tuPAAAaPg8DiOzZ8/W+PHjlZCQoC5dumju3Llq0qSJ0tPTqz3/f/7nfzR06FA9/fTT6ty5s6ZPn67evXvrT3/600U3HgAANHyNPDm5rKxMW7Zs0eTJk13HnE6noqOjlZOTU+01OTk5Sk5OdjsWExOjJUuW1FintLRUpaWlrp9PnDghSSouLq72/IrSU3V9C9Wq6XXrgtrUpja1qU1tatf+nGVZtb+I5YEDBw5YkqyNGze6HX/66aetfv36VXuNv7+/NX/+fLdjaWlpVuvWrWusk5KSYkniwYMHDx48ePjAIz8/v9Z84VHPSH2ZPHmyW29KRUWFjh07piuuuEIOh8Oj1youLlZ4eLjy8/PVvHlzbzeV2tSmNrWpTW1q18CyLJ08eVLt2rWr9TyPwkhoaKj8/PxUWFjodrywsFBt2rSp9po2bdp4dL4kBQYGKjAw0O1YixYtPGlqFc2bN6/3/4nUpja1qU1tal/utUNCQs57jkcTWAMCAtSnTx9lZ2e7jlVUVCg7O1tRUVHVXhMVFeV2viR99tlnNZ4PAAAuLx4P0yQnJ2vs2LHq27ev+vXrpzlz5qikpEQJCQmSpPj4eLVv316pqamSpCeffFI333yzZs2apeHDh+vDDz/U119/rbfeesu77wQAADRIHoeRuLg4HT58WFOmTFFBQYF69uypFStWKCwsTJK0f/9+OZ3/7nAZMGCA5s+frxdeeEHPPfecOnbsqCVLlqhr167eexe1CAwMVEpKSpVhH2pTm9rUpja1qX1p1HZY1vnutwEAALAPe9MAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMuyeXgfc2hQ4f0zjvv6LnnnrOtxg8//KAzZ86oY8eObsf37Nkjf39/RURE2Fa7Jnv37tXDDz+sv/3tb/VeG77l3M02azJ79mzb2nDmzBnNnz9fMTExrqUMLgVFRUVavny5xowZY7opsEl+fr4kKTw83HBL7OMzt/a+9NJLdTpvypQpNrekqm3btql3794qLy+3rcbNN9+sBx98UGPHjnU7/v777+udd97RmjVrbKtdk/p436Zt2rRJS5cuVVlZmW699VYNHTrUdJNs9d5779XpvPj4eK/WHTx4sNvPGzZsUJ8+fdS4cWPXMYfDoVWrVnm17rmaNGmiXbt26eqrr7a1jicuh9+zmmzfvl19+/ZVWVmZ11+7Q4cO+uqrr3TFFVd4/bXr4syZM5o2bZpef/11/fzzz5Kk4OBgPf7440pJSZG/v7/Xa27fvr1O53Xv3t3rtX0mjDidTrVr106tW7eucatih8Oh3Nzcem5Z/fxl0bx5c+Xm5uraa691O56Xl6e+ffuqqKjItto1qa+/JCsqKpSZmanFixdr3759cjgcioyM1N13360HHnjA480V62rhwoWKi4tT48aN5e/vr+LiYr3yyiuaOHGiLfWqc/r0aX322Wf67rvvJEnXXXedfvvb37r9I+1NTqdTwcHBatSoUa2/Z8eOHbOlfqVmzZpp27Zt6tChg611zjVo0CBNmDBBt99+e73WrU19/Z6VlJRo5syZys7O1qFDh1RRUeH2/N69e22tXx0737vT6VRBQYFat27t9deui0ceeUSLFy/WSy+95No+JScnR1OnTtWoUaP05ptver2m0+mUw+Go9ne78rjD4bDlz9tnhmliY2O1atUq9e3bVw8++KBGjBjhthKsr3M4HDp58mSV4ydOnPDpb0yWZem2227T8uXL1aNHD3Xr1k2WZWnXrl363e9+p8WLF2vJkiW21E5NTdX48eOVlpYmPz8/paamasaMGfUWRj799FONGzdOR44ccTseGhqqefPmaeTIkV6v2blzZxUWFur+++/Xgw8+aMs3pEvZo48+quTkZOXn56tPnz5q2rSp2/O+/Ocxbtw4rV27Vg888IDatm1rW8jHL+bPn68PP/xQsbGxrmPdu3dXeHi4Ro8ebUsY+eGHH7z+mnVm+ZADBw5YM2bMsK677jqrTZs21jPPPGPt3r3bdLOsrVu3Wk6n09YaI0aMsP7zP//TOnPmjOvYmTNnrLvuussaOnSorbVrUh/vOz093WrWrJm1atWqKs9lZ2dbzZo1s959911bajdt2tTas2eP6+fS0lKrUaNGVmFhoS31zvbFF19Y/v7+1l133WVt3LjROn78uHX8+HHriy++sO68804rICDAysnJsaX2pk2brN///vdWSEiI1adPH+uNN96wTpw4YUutmgQHB1vff/99vda0LMtyOBw1Puz+rNekPn7PLMuyQkJCrA0bNthexxN2vneHw2G999571ieffFLrwy5XXnmltXPnzirHd+7caYWGhtpS85ZbbrEWLVpU4/OHDx+2IiMjbantM8M051q3bp0yMjK0aNEidevWTZ9//rltXdfnm1x3+PBhzZ8/39Yeip07d+qmm25SixYtNHDgQEnS+vXrVVxcrFWrVtmyF1CvXr1q/XZ06tQp7dmzx9b3PWTIEN1yyy2aNGlStc/PmDFDa9eu1cqVK71eu7pu3PoaPhg2bJjCw8P15z//udrnH3roIeXn52v58uW2teH06dP66KOPlJGRoc2bN2vUqFFKT0+vl/0zTA3T/Pjjj7U+b8dcktdff73W5w8cOKDXXnvN9h7QyMhILV++XJ07d7a1ztmKi4trfX779u26+eabbRumOR+7hiykX+ZB7t69WxkZGa7fqdLSUiUmJqpjx45KSUnxek2n0ymn06nnn39e06ZNq/J8YWGh2rVrZ8t79tkwUvkXZVpamnbs2KGCggI1b97cllrnTq6ryerVq22pX+ngwYP605/+pG3btqlx48bq3r27kpKS1KpVK1vqVfdhrY4dvzSV2rRpoxUrVqhnz57VPv/NN98oNjZWBQUFXq/tdDr18ssvKzg42HXs2Wef1dNPP63Q0FDXsSeeeMLrtVu1aqW1a9eqW7du1T5f+Zf08ePHvV77XOvWrVNKSorWrVunI0eOqGXLll6vce7EugEDBmjBggX61a9+5Xa8voZJdu7cqf3797tNnHQ4HLYMjUVGRtbpPLu72N9//3198sknevfdd9WkSRNba1WqnMNQE8vGOQym54zccccdys7OVmBgoHr06CHplzkylZPlz7Z48WKv1HQ6nfrzn/+siRMn6pZbbtH777/vNhRJGPFATk6O0tPTtWDBAl133XVKSEjQmDFj1KJFC9NNgw0CAgL0448/qm3bttU+f/DgQUVGRqq0tNTrtSMiIs47bu5wOGyZ2Ne4cWPt3r27xm/iP/74ozp16qTTp097vbb0y7fxd999VxkZGSopKXHNIenUqZMt9UxOrDvb3r17dccdd2jHjh1u7an8HPja/Kxzez/z8vJkWZYiIiKq3M1hx80Ba9eurdN5N998s9dr+/n56Z///KexMJKQkFDnczMyMrxSszKAHT16VLfffrsCAwP1ySefuHog7QwjPjOB9dVXX1VmZqaOHDmi++67T+vXr6/XyWTFxcX68ssvVVZWpn79+unKK6+st9qVjh8/rnnz5mnXrl2SpC5duighIcG2npHaFBcX64MPPtC8efP09ddf21anvLxcjRrV/DH28/PTmTNnbKm9b9++Wp//6aef6nzLuac6duyoVatW1fgXVnZ2dpU1Z7xhwYIFysjI0Nq1axUTE6NZs2Zp+PDh8vPz83qtsxmdWHeWJ598UpGRkcrOzlZkZKS+/PJLHTt2TE899ZRee+01W2quWrVKSUlJ2rRpU5Xe3RMnTmjAgAGaO3eua3jWm0aNGuX11/SEHSGjrkx/T/dWwLgQnTt31ldffaXRo0frhhtuUFZWlqKjo22t6TM9I06nU1dddZVGjBihgICAGs+zY1GkrVu3atiwYa6hgGbNmmnBggWKiYnxeq2arFu3TiNHjlRISIj69u0rSdqyZYuKioq0dOlS3XTTTfXSjtWrVys9PV2LFy9WSEiI7rjjDqWlpdlWz+l0KjY2tsZ5CqWlpVqxYoWRb6x23nb4xz/+US+//LL+8pe/aNiwYW7PLVu2TGPHjtVzzz1X58XC6qry9+y+++6rdeEvbw9NvfTSS5o4cWK9DQ/UJDQ0VKtWrVL37t0VEhKizZs36/rrr9eqVav01FNP6ZtvvvF6zdtuu02DBw/WhAkTqn3+9ddf1+rVq/Xxxx97vbZp55szUsmOIfiEhAS9/vrratasmddfuzarVq3STTfdVOuXLLucOzRlWZYmT56s2bNn65VXXtGYMWMYpjmfQYMG1anL3I5FkWJiYvTzzz/rtddeU1BQkKZPn64dO3Zoz549Xq9Vk27duikqKkpvvvmm61tqeXm5Hn30UW3cuFE7duywrfaBAweUmZmpjIwMFRUV6fjx45o/f77uuece22//+93vflenGia+ZdgZRioqKhQXF6dFixbp+uuvV+fOnV23NO/Zs0ejRo3SRx995PXb200NTZnuMq/UsmVL5ebmKjIyUtdcc43eeecdDR48WN9//726deumU6dOeb3m1VdfrRUrVtQ4cXT37t0aMmSI9u/f7/XaZ6tpEbCioiL17t3bluFIk3NGzlZeXq4lS5a4ep1//etf67bbbrOlR/Dcz/pvfvMbLVq0SO3bt/d6rfPVrvThhx9q3LhxGjx4sJYvX84wTW1MrDBaacuWLfrb3/6m3r17S5LS09PVqlUrFRcX2zZp9lx5eXlauHCh2y+Hn5+fkpOT67xqpqcWLVqkefPmad26dYqNjdWsWbMUGxurpk2bqlu3bvWyDkFmZqbtNS5FTqdTH330kRYsWKD58+dr9+7dkqROnTpp6tSpuvfee22pe76hKbtcKt+Zunbtqm3btikyMlL9+/fXq6++qoCAAL311lu23dlTWFhY62qbjRo10uHDh22pfbZ9+/ZV+49QaWmpfvrpJ1tq2j3pvy7y8vI0fPhw/fTTT7r++usl/bLGUHh4uJYtW6ZrrrnGq/XO/az//e9/t2XOW11qV7r33nvVqVMnW4ftfCaMSObmbRw7dsxtVn+LFi3UtGlTHT16tN7CSO/evbVr1y7XL0ulXbt2uWZie1tcXJyeffZZZWVl1XtXZqUHH3zwvOc4HA7NmzevHlpTf8rLy/Xaa6/p008/VVlZmUaOHKmpU6fadvt6JZPzFy6FRbZeeOEFlZSUSPpl6GjEiBEaOHCgrrjiCmVlZdlSs3379vr222+rrK5cafv27TVO4PaGTz/91PXfK1euVEhIiOvn8vJy1/wZOwwcOFD//d//7fqc33rrrUpJSbH9c362J554Qh06dFBOTo5r/t3Ro0d1//3364knntCyZcvqrS12W716dY1zDHv27KktW7bY9n59ZpjG5LwNp9OpVatWuf1PrO7WQzsn1GZlZemZZ57R448/rt/85jeSftk3JS0tTTNnznTr4vVWOx566CFlZWXp17/+tR544AHFxcWpZcuW8vf317Zt29SlSxev1KmN0+nU1VdfrV69etX67dmO8fQ777yz1ueLioq0du1aW7o0p0+frqlTpyo6OlqNGzfWypUrNXr0aKWnp3u91tlMzV9wOp0KCQk5byCxexn6mmq2bNnStrD0+OOPa82aNfrqq68UFBTk9tzp06fVr18/DR48+LzrkVyoyqG+6u5mqtyEc9asWRoxYoTXa5v6nJ+tadOm2rRpU5Xb6Ldt26Ybb7zRtW+Mt/j5+amgoMD1Zbp58+au3jhf5jNhxOS8jdrG5evrtsPzzQ2wqx2nT5/WggULlJ6eri+//FIxMTFatmyZtm7dastCa+d67LHH9Ne//lVXX321EhISdP/999fb3UN1vfXOjvkqHTt21MSJE/XQQw9Jkj7//HMNHz5cp0+ftnUbBFPzF5xOp+bMmeP2rbw6524U6QsKCwvVu3dv+fn5KSkpydX7uXv3bqWlpam8vFy5ubm27yQcGRmpr776ym0NHbuZ+pyfrVWrVvq///s/DRgwwO34F198oZEjR3o9ADudTnXt2tU1gXX79u3q1KlTlRszTOyzZiefCSOhoaFu8zaKiorUqlUrFRUV2T5UsmPHjjrVsHOnz/OtDGlHO7799lu3wLFnzx6lp6frvffe088//6zhw4fr7rvvPm8PwsUqLS3V4sWLlZ6ero0bN2r48OFKTEzUkCFDLomufTsEBgYqLy/PbUvxoKAg5eXlVVkIzJuCgoJqHTLIy8tTt27dvL6+iekFqEz78ccf9cgjj2jlypVua5vExMQoLS3N1m/Nw4YN01//+ldXEJw5c6Yefvhh19pNR48e1cCBA7Vz506v1zb1OT9bfHy8cnNzNW/ePPXr10+S9OWXX2r8+PHq06eP1+etXQqLSRphyyLzBjgcjip7ggQHB1t79+6tl9r9+/e33nrrLau4uNj2ep4oLCy0/vCHP9jy2g6Hw+rXr5/11ltvWSdPnnQdLy8vtz799FPr9ttvtwICAmypXZN9+/ZZU6dOtTp06GBdddVVbu3yJU6n0zp06JDbsfr4vHfo0MH6+OOPa3x+0aJFtuxd4XQ662XPn0vdsWPHrM2bN1tffvmldezYsXqpee7frc2aNXPbF6igoMC2/WFMfc7Pdvz4cev222+3nE6nFRAQYAUEBFhOp9MaNWqUVVRUVG/t8HU+0zNict7G+vXrlZGRoYULF6qiokJ33XWXxo0bZ8skPk/ZeXtpXd73oUOH6vXbbH5+vjIyMpSZmamysjLt3r3bbbl2X1Hd+ipLly7VLbfc4rZ8s7eWia5kav7C5d4zYtK5f/bn7gtk56qcpj7n0i+3z589efaqq67S2LFj5XA41Llz5xp7B71h06ZNWrp0qWvS7tChQ22rdanwqTBSk/qat1FSUqIFCxYoMzNT69ev17XXXqvExESNHTtWbdq0sa1ubewMI5VMv++zh2k2bNigESNGKCEhQUOHDq23ceX6Zmq+yqUyfwH1x2QYMTkvy9Tk2YULFyouLk6NGzeWv7+/iouL9corr2jixIm21jXOaL+MF23fvt3at2/feR/1Zc+ePdZzzz1nhYeHW/7+/tbIkSPrrfbZ6mt78Ur1/b4feeQRq2XLllb37t2tOXPmWIcPH7a1Hn4ZCouNjbWcTqflcDgsh8NhOZ1OKzY2tl67z1E/zh0qOXeYxM5hGpOuvfZaa+7cua6fP/vsMysgIMAqLy+3tW7v3r2thx56yDpz5oxlWZY1Y8YMq2XLlrbWvBT4VM9Iv379lJiYqHvvvdfYuhdnKykp0QcffKDJkyerqKjI55Ykr0l9vu/K5cnP3dDrXHZ0417ujh8/7to4rWPHjrbs1gvzzh0qOXeYxOSWC3YyNXk2ODhYW7dudQ0DlZWVqWnTpjpw4IBPD1P6zKJna9euVUZGhp566ilNmDDB6LyNdevWKT09XYsWLZLT6dQ999yjxMREW2qdb++R+liZsVJ9vu9K8fHxPnvHzKWuZcuWuuGGG0w3AzY793bp+++/v8o58fHx9dWcenPmzJkq86L8/f31r3/9y9a6p06dcrs7MyAgQEFBQfr55599Ooz4TM9IJVPzFw4ePKjMzExlZmYqLy9PAwYMUGJiou655x63iVbeNnjw4DqdZ9eyyqbeNwDYydTkWafTqZdfftlt4v2zzz6rp59+2m2NF29vRmmaz4WRs+Xl5SkjI0N/+ctfVFBQoKFDh7otbewtsbGx+vzzzxUaGqr4+Hg9+OCDVZZl90WX6/sG4PtMTZ41tRmlaT4dRqT6mb9w2223KTExUSNGjLBlF8fzMbUnj+n3DQDwDT4bRmqav1C5b4uvMLknDwDAu3JycnT06FG3vX7ee+89paSkqKSkRKNGjdL//u//ug0f+QKfWoTh4MGDmjFjhq677joNGjRIeXl5ev3113Xw4EG9/fbbPhdEpF/GEiMjI/XFF19oy5YtuvXWW5WUlGS6WQCACzBt2jT9/e9/d/28Y8cOJSYmKjo6WpMmTdLSpUuVmppqsIX28Jmekct1/oLJPXkAAN7Vtm1bLV26VH379pUkPf/881q7dq02bNggSfroo4+UkpJiy15AJvnMrb3+/v5auHDhZTd/4dixY273vLdo0UJNmzbV0aNHCSMA0MAcP37cbQXjtWvXKjY21vXzDTfcoPz8fBNNs5XPhBE77pJpKHbu3OmaMyJJlmVp165dOnnypOuYHXvyAAC8KywsTD/88IPCw8NVVlam3Nxct518T548KX9/f4MttIfPhJHL2S233FLl2IgRI+ptTx4AgHcMGzZMkyZN0iuvvKIlS5aoSZMmbot3bt++Xddcc43BFtqDMNLAbdu2jeEYAPAR06dP15133qmbb75ZwcHBevfddxUQEOB6Pj09XUOGDDHYQnv4zATWy9WluCcPAODinDhxQsHBwVXmQB47dkzBwcFuAcUX+NStvZejtWvXqkuXLnrqqafUtm1bjR07VuvXrzfdLADARQgJCan2ZoxWrVr5XBCR6BnxGab25AEA4GIRRnxQfe3JAwCANxBGfFR97MkDAIA3cDeNj6lpTx4AAC5V9Iz4gIMHDyozM1OZmZnKy8vTgAEDlJiYqHvuuUdNmzY13TwAAGpFz0gDd7nuyQMA8B2EkQbuct2TBwDgOximAQAARrHoGQAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMCo/w9e282PhArPIAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "overlay={}\n",
    "regioncubesum = data.sum()\n",
    "for i in range(len(regioncubesum)):\n",
    "    overlay[regioncubesum.index[i]]=regionCubeCount[regioncubesum.index[i]]/regioncubesum[regioncubesum.index[i]]\n",
    "print(overlay)\n",
    "overlayseries = pd.Series(overlay)\n",
    "overlayseries.plot.bar()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 各脑区所有神经元数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'data' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32md:\\project\\python\\neuron-vis\\figures\\rtFlatNeuron.ipynb 单元格 28\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> <a href='vscode-notebook-cell:/d%3A/project/python/neuron-vis/figures/rtFlatNeuron.ipynb#X31sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m datatrue \u001b[39m=\u001b[39m data\u001b[39m>\u001b[39m\u001b[39m0\u001b[39m\n\u001b[0;32m      <a href='vscode-notebook-cell:/d%3A/project/python/neuron-vis/figures/rtFlatNeuron.ipynb#X31sZmlsZQ%3D%3D?line=1'>2</a>\u001b[0m t\u001b[39m=\u001b[39m datatrue\u001b[39m.\u001b[39msum()\n\u001b[0;32m      <a href='vscode-notebook-cell:/d%3A/project/python/neuron-vis/figures/rtFlatNeuron.ipynb#X31sZmlsZQ%3D%3D?line=2'>3</a>\u001b[0m neuroncount\u001b[39m=\u001b[39m{}\n",
      "\u001b[1;31mNameError\u001b[0m: name 'data' is not defined"
     ]
    }
   ],
   "source": [
    "\n",
    "datatrue = data>0\n",
    "t= datatrue.sum()\n",
    "neuroncount={}\n",
    "for i in range(len(t)):\n",
    "    # print(t.index[i])\n",
    "    neuroncount[t.index[i]]=len(regionNeurons[t.index[i]])\n",
    "print(neuroncount)\n",
    "s = pd.Series(neuroncount)\n",
    "df=pd.DataFrame([t,s-t])\n",
    "df = df.T\n",
    "\n",
    "df.plot.bar(stacked=True,figsize=(8,1))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>VPM</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>VPL</th>\n",
       "      <td>27</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>VPLpc</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>VAL</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MD</th>\n",
       "      <td>20</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LP</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PO</th>\n",
       "      <td>39</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CM</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TH</th>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ar</th>\n",
       "      <td>14</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CL</th>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Eth</th>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PIL</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PoT</th>\n",
       "      <td>14</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SPFp</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ZI</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        0  1\n",
       "VPM     9  1\n",
       "VPL    27  0\n",
       "VPLpc   4  0\n",
       "VAL     5  0\n",
       "MD     20  0\n",
       "LP      3  0\n",
       "PO     39  2\n",
       "CM      4  0\n",
       "TH      6  2\n",
       "ar     14  0\n",
       "CL     13  0\n",
       "Eth     8  1\n",
       "PIL     1  3\n",
       "PoT    14  5\n",
       "SPFp    2  4\n",
       "ZI      7  0"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 所有神经元在rt的flatmap"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 不同脑区神经元一个图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\Program Files\\anaconda3\\envs\\neuronVis\\lib\\site-packages\\skimage\\io\\_plugins\\matplotlib_plugin.py:150: UserWarning: Low image data range; displaying image with stretched contrast.\n",
      "  lo, hi, cmap = _get_display_range(image)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/VPMflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/VPLflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/VPLpcflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/VALflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/MDflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/LPflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/POflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/CMflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/THflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/arflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/CLflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/Ethflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/PILflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/PoTflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/SPFpflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_30560\\4012749782.py:12: UserWarning: ../resource/thsample/rtflatmap/ZIflatbgd.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "for region in source_regions_sort_index:\n",
    "    img = io.imread(r'../resource/rt/rtflatmapbgd.png')\n",
    "    img[:]=0\n",
    "    for neuron in regionNeurons[region]:\n",
    "        # if not os.path.isfile(\"../resource/thsample/rtflatmap/\"+region+neuron['sampleid']+ neuron['name']+'flat.png'):\n",
    "        neuronT = iondata.getNeuronTreeByID(neuron['sampleid'], neuron['name'])\n",
    "        color=[random.randrange(0, 256),random.randrange(0, 256),random.randrange(0, 256)]\n",
    "        flatneuronSum(neuronT,grid,dv0,dv1,dv2,flatenPara,img)\n",
    "    if len(regionNeurons[region])>0:\n",
    "        # plt.savefig(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png', format='png', dpi=100)\n",
    "        io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatbgd.png',img)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[255 255 255]\n"
     ]
    }
   ],
   "source": [
    "lut = pd.read_csv('../resource/LUT.csv')\n",
    "lut = lut.to_numpy()\n",
    "lut=lut[:,1:4]\n",
    "print(lut[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\Program Files\\anaconda3\\envs\\neuronVis\\lib\\site-packages\\skimage\\_shared\\utils.py:348: RuntimeWarning: Images with dimensions (M, N, 3) are interpreted as 2D+RGB by default. Use `multichannel=False` to interpret as 3D image with last dimension of length 3.\n",
      "  return func(*args, **kwargs)\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/VPMflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "VPM 9\n",
      "VPL 13\n",
      "VPLpc 5\n",
      "VAL 5\n",
      "MD 9\n",
      "LP 6\n",
      "PO 19\n",
      "CM 4\n",
      "TH 7\n",
      "ar 11\n",
      "CL 17\n",
      "Eth 8\n",
      "PIL 0\n",
      "PoT 15\n",
      "SPFp 8\n",
      "ZI 8\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/VPLflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/VPLpcflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/VALflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/MDflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/LPflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/POflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/CMflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/THflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/arflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/CLflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/Ethflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/PILflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/PoTflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/SPFpflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n",
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_4844\\1458036507.py:28: UserWarning: ../resource/thsample/rtflatmap/ZIflatblur.png is a low contrast image\n",
      "  io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
      "Lossy conversion from int64 to uint8. Range [0, 255]. Convert image to uint8 prior to saving to suppress this warning.\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "from skimage import filters\n",
    "# fig,ax = plt.subplots(figsize=(15,15))\n",
    "imgbgd = io.imread('../resource/rt/rtflatmap.png')\n",
    "maxvalue=0\n",
    "for region in source_regions_sort_index:\n",
    "    if os.path.isfile('../resource/thsample/rtflatmap/'+region+'flatbgd.png'):\n",
    "        img = io.imread('../resource/thsample/rtflatmap/'+region+'flatbgd.png')\n",
    "        print(region,np.max(img))\n",
    "        if np.max(img)==0:\n",
    "            continue\n",
    "        if maxvalue<np.max(img):\n",
    "            maxvalue=np.max(img)\n",
    "for region in source_regions_sort_index:\n",
    "    if os.path.isfile('../resource/thsample/rtflatmap/'+region+'flatbgd.png'):\n",
    "        img = io.imread('../resource/thsample/rtflatmap/'+region+'flatbgd.png')\n",
    "\n",
    "        img = img*255/maxvalue\n",
    "        img1 = filters.gaussian(img,sigma=4)\n",
    "        img1 = img1[:,:,0]\n",
    "        img2 = img1.reshape([img1.shape[0]*img1.shape[1]])\n",
    "        # print(region)\n",
    "        img2 = img2*20\n",
    "        img2=img2.astype(np.int8)\n",
    "        img3 = lut[img2]\n",
    "        img4 = img3.reshape([img1.shape[0],img1.shape[1],3])\n",
    "        img4[imgbgd[:,:,0]==0]=[0,0,0]\n",
    "        io.imsave(\"../resource/thsample/rtflatmap/\"+region+'flatblur.png',img4)\n",
    "        # io.imshow(img)\n",
    "        # plt.show()\n",
    "        # break"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 所有神经元一个图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n",
      "test\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "img = io.imread(r'../resource/rt/rtflatmap.png')\n",
    "for region in source_regions_sort_index:\n",
    "    color=[random.randrange(0, 256),random.randrange(0, 256),random.randrange(0, 256)]\n",
    "    for neuron in regionNeurons[region]:\n",
    "        # if not os.path.isfile(\"../resource/thsample/rtflatmap/\"+region+neuron['sampleid']+ neuron['name']+'flat.png'):\n",
    "        # print('test')\n",
    "        neuronT = iondata.getNeuronTreeByID(neuron['sampleid'], neuron['name'])\n",
    "        flatneuron(neuronT,grid,dv0,dv1,dv2,flatenPara,img,color)\n",
    "\n",
    "plt.savefig(\"../resource/thsample/rtflatmap/\"+'rtflat.png', format='png', dpi=300)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一个神经元一个图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\Program Files\\anaconda3\\envs\\neuronVis\\lib\\site-packages\\skimage\\io\\_plugins\\matplotlib_plugin.py:150: UserWarning: Low image data range; displaying image with stretched contrast.\n",
      "  lo, hi, cmap = _get_display_range(image)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\project\\python\\AppData\\Local\\Temp\\ipykernel_24536\\685348280.py:112: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).\n",
      "  fig,ax = plt.subplots(figsize=(16,17))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n",
      "not in up boundary\n"
     ]
    }
   ],
   "source": [
    "for region in source_regions_sort_index:\n",
    "    for neuron in regionNeurons[region]:\n",
    "        if not os.path.isfile(\"../resource/thsample/rtflatmap/\"+region+neuron['sampleid']+ neuron['name']+'flat.png'):\n",
    "            neuronT = iondata.getNeuronTreeByID(neuron['sampleid'], neuron['name'])\n",
    "            flatneuron(neuronT,grid,dv0,dv1,dv2,flatenPara)\n",
    "            plt.savefig(\"../resource/thsample/rtflatmap/\"+region+neuron['sampleid']+ neuron['name']+'flat.png', format='png', dpi=300)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# iso pathcube"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys,copy,os,inspect\n",
    "if hasattr(sys.modules[__name__], '__file__'):\n",
    "    _file_name = __file__\n",
    "else:\n",
    "    _file_name = inspect.getfile(inspect.currentframe())\n",
    "CURRENT_FILE_PATH = os.path.dirname(_file_name)\n",
    "sys.path.append(os.getcwd()+\"/../neuronVis\")\n",
    "\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "from skimage import draw, io\n",
    "import matplotlib\n",
    "import BoundLaplace\n",
    "import copy\n",
    "import rtFlatmap\n",
    "import BoundLaplace\n",
    "import nrrd\n",
    "import numpy as np\n",
    "import IONData\n",
    "# matplotlib.use('module://matplotlib_inline.backend_inline')\n",
    "# %matplotlib inline\n",
    "boundlaplace20,boundlaplace20header = nrrd.read('../resource/boundlaplace20.nrrd')\n",
    "isoMask100,isoMask100header = nrrd.read('../resource/rt/mask_combinedISO_CLA-100.nrrd')\n",
    "\n",
    "def isoPathCube(neurontrees):\n",
    "    edges=[]\n",
    "    for neurontree in neurontrees:\n",
    "        for p in neurontree.points:\n",
    "            if p.z>5700:\n",
    "                p.xyz[2]=11400-p.xyz[2]\n",
    "        \n",
    "        for edge in neurontree.edges:\n",
    "            # print(index)\n",
    "\n",
    "            points=[]\n",
    "            for point in edge.data[0:-1:20]:\n",
    "                points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "            point=edge.data[-1]\n",
    "            points.append([point.xyz[0]/20,point.xyz[1]/20,point.xyz[2]/20])\n",
    "            out=[]\n",
    "            for point in points:\n",
    "                grid_position = BoundLaplace.FastTrilinearInterpolant(boundlaplace20, point) \n",
    "                if grid_position==5:\n",
    "                    out.append(point)\n",
    "            if len(out)>0:\n",
    "                edges.append(out)\n",
    "    pathcubes = np.zeros(isoMask100.shape)\n",
    "    for edge in edges:\n",
    "        for p in edge:\n",
    "            pathcubes[int(p[0]/5),int(p[1]/5),int(p[2]/5)] = isoMask100[int(p[0]/5),int(p[1]/5),int(p[2]/5)]\n",
    "    return np.sum(pathcubes),len(edges)\n",
    "    \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [],
   "source": [
    "for region in source_regions_sort_index:\n",
    "    for neuron in regionNeurons[region]:\n",
    "        neuronT = iondata.getNeuronTreeByID(neuron['sampleid'], neuron['name'])\n",
    "        cubecount,branchcount = isoPathCube([neuronT])\n",
    "        neuron['isocubecount']=cubecount\n",
    "        neuron['isobranchcount']=branchcount"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# rt投射范围 和 iso投射范围关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "VPM 9.0 380.0\n",
      "VPM 16.0 773.0\n",
      "VPM 27.0 779.0\n",
      "VPM 19.0 420.0\n",
      "VPM 8.0 278.0\n",
      "VPM 6.0 228.0\n",
      "VPM 7.0 218.0\n",
      "VPM 0.0 0.0\n",
      "VPM 14.0 799.0\n",
      "VPM 8.0 65.0\n",
      "VPL 11.0 269.0\n",
      "VPL 26.0 424.0\n",
      "VPL 20.0 283.0\n",
      "VPL 8.0 244.0\n",
      "VPL 12.0 265.0\n",
      "VPL 14.0 233.0\n",
      "VPL 11.0 101.0\n",
      "VPL 7.0 144.0\n",
      "VPL 9.0 81.0\n",
      "VPL 10.0 255.0\n",
      "VPL 9.0 194.0\n",
      "VPL 12.0 175.0\n",
      "VPL 7.0 47.0\n",
      "VPL 7.0 99.0\n",
      "VPL 7.0 269.0\n",
      "VPL 22.0 399.0\n",
      "VPL 10.0 89.0\n",
      "VPL 12.0 329.0\n",
      "VPL 12.0 139.0\n",
      "VPL 17.0 292.0\n",
      "VPL 9.0 283.0\n",
      "VPL 11.0 227.0\n",
      "VPL 12.0 245.0\n",
      "VPL 14.0 253.0\n",
      "VPL 18.0 607.0\n",
      "VPL 10.0 0.0\n",
      "VPL 12.0 209.0\n",
      "VPLpc 9.0 111.0\n",
      "VPLpc 9.0 306.0\n",
      "VPLpc 5.0 223.0\n",
      "VPLpc 24.0 466.0\n",
      "VAL 13.0 549.0\n",
      "VAL 5.0 183.0\n",
      "VAL 13.0 929.0\n",
      "VAL 11.0 431.0\n",
      "VAL 2.0 455.0\n",
      "MD 15.0 255.0\n",
      "MD 3.0 4.0\n",
      "MD 5.0 249.0\n",
      "MD 1.0 651.0\n",
      "MD 6.0 0.0\n",
      "MD 5.0 1.0\n",
      "MD 5.0 74.0\n",
      "MD 7.0 326.0\n",
      "MD 20.0 191.0\n",
      "MD 5.0 74.0\n",
      "MD 7.0 165.0\n",
      "MD 11.0 510.0\n",
      "MD 5.0 137.0\n",
      "MD 45.0 570.0\n",
      "MD 8.0 694.0\n",
      "MD 19.0 940.0\n",
      "MD 13.0 266.0\n",
      "MD 22.0 110.0\n",
      "MD 23.0 561.0\n",
      "MD 6.0 223.0\n",
      "LP 25.0 451.0\n",
      "LP 22.0 321.0\n",
      "LP 18.0 313.0\n",
      "PO 25.0 550.0\n",
      "PO 15.0 532.0\n",
      "PO 18.0 450.0\n",
      "PO 34.0 424.0\n",
      "PO 19.0 290.0\n",
      "PO 24.0 333.0\n",
      "PO 32.0 491.0\n",
      "PO 18.0 322.0\n",
      "PO 28.0 321.0\n",
      "PO 35.0 520.0\n",
      "PO 39.0 423.0\n",
      "PO 19.0 389.0\n",
      "PO 19.0 399.0\n",
      "PO 4.0 352.0\n",
      "PO 24.0 349.0\n",
      "PO 5.0 269.0\n",
      "PO 7.0 551.0\n",
      "PO 0.0 0.0\n",
      "PO 30.0 333.0\n",
      "PO 30.0 468.0\n",
      "PO 3.0 109.0\n",
      "PO 20.0 414.0\n",
      "PO 18.0 423.0\n",
      "PO 31.0 323.0\n",
      "PO 21.0 250.0\n",
      "PO 17.0 344.0\n",
      "PO 29.0 609.0\n",
      "PO 29.0 438.0\n",
      "PO 34.0 321.0\n",
      "PO 8.0 415.0\n",
      "PO 15.0 240.0\n",
      "PO 5.0 161.0\n",
      "PO 21.0 292.0\n",
      "PO 24.0 302.0\n",
      "PO 19.0 369.0\n",
      "PO 6.0 474.0\n",
      "PO 20.0 312.0\n",
      "PO 23.0 364.0\n",
      "PO 2.0 0.0\n",
      "PO 8.0 315.0\n",
      "PO 0.0 0.0\n",
      "CM 13.0 511.0\n",
      "CM 6.0 18.0\n",
      "CM 6.0 0.0\n",
      "CM 5.0 0.0\n",
      "TH 0.0 0.0\n",
      "TH 4.0 258.0\n",
      "TH 19.0 181.0\n",
      "TH 0.0 12.0\n",
      "TH 14.0 451.0\n",
      "TH 13.0 256.0\n",
      "TH 9.0 249.0\n",
      "TH 8.0 445.0\n",
      "ar 17.0 225.0\n",
      "ar 28.0 389.0\n",
      "ar 12.0 267.0\n",
      "ar 39.0 430.0\n",
      "ar 16.0 261.0\n",
      "ar 22.0 366.0\n",
      "ar 12.0 163.0\n",
      "ar 14.0 279.0\n",
      "ar 12.0 105.0\n",
      "ar 12.0 280.0\n",
      "ar 14.0 262.0\n",
      "ar 21.0 254.0\n",
      "ar 6.0 51.0\n",
      "ar 4.0 494.0\n",
      "CL 14.0 335.0\n",
      "CL 19.0 561.0\n",
      "CL 7.0 198.0\n",
      "CL 28.0 497.0\n",
      "CL 28.0 383.0\n",
      "CL 26.0 503.0\n",
      "CL 34.0 645.0\n",
      "CL 20.0 386.0\n",
      "CL 25.0 622.0\n",
      "CL 17.0 206.0\n",
      "CL 7.0 353.0\n",
      "CL 7.0 113.0\n",
      "CL 3.0 680.0\n",
      "Eth 30.0 411.0\n",
      "Eth 39.0 786.0\n",
      "Eth 51.0 1006.0\n",
      "Eth 0.0 0.0\n",
      "Eth 38.0 654.0\n",
      "Eth 18.0 661.0\n",
      "Eth 4.0 109.0\n",
      "Eth 25.0 533.0\n",
      "Eth 16.0 181.0\n",
      "PIL 0.0 0.0\n",
      "PIL 0.0 0.0\n",
      "PIL 1.0 329.0\n",
      "PIL 0.0 87.0\n",
      "PoT 88.0 918.0\n",
      "PoT 10.0 191.0\n",
      "PoT 23.0 85.0\n",
      "PoT 24.0 330.0\n",
      "PoT 0.0 0.0\n",
      "PoT 20.0 479.0\n",
      "PoT 14.0 323.0\n",
      "PoT 0.0 0.0\n",
      "PoT 5.0 225.0\n",
      "PoT 31.0 629.0\n",
      "PoT 29.0 568.0\n",
      "PoT 14.0 51.0\n",
      "PoT 4.0 292.0\n",
      "PoT 6.0 127.0\n",
      "PoT 5.0 516.0\n",
      "PoT 0.0 0.0\n",
      "PoT 0.0 139.0\n",
      "PoT 15.0 378.0\n",
      "PoT 0.0 0.0\n",
      "SPFp 20.0 323.0\n",
      "SPFp 0.0 0.0\n",
      "SPFp 10.0 0.0\n",
      "SPFp 0.0 101.0\n",
      "SPFp 0.0 0.0\n",
      "SPFp 0.0 174.0\n",
      "ZI 22.0 176.0\n",
      "ZI 16.0 234.0\n",
      "ZI 22.0 357.0\n",
      "ZI 3.0 284.0\n",
      "ZI 1.0 485.0\n",
      "ZI 11.0 378.0\n",
      "ZI 10.0 389.0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "VPM       3940.0\n",
       "VPL       6155.0\n",
       "VPLpc     1106.0\n",
       "VAL       2547.0\n",
       "MD        6001.0\n",
       "LP        1085.0\n",
       "PO       14241.0\n",
       "CM         529.0\n",
       "TH        1852.0\n",
       "ar        3826.0\n",
       "CL        5482.0\n",
       "Eth       4341.0\n",
       "PIL        416.0\n",
       "PoT       5251.0\n",
       "SPFp       598.0\n",
       "ZI        2303.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from re import S\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "matplotlib.use('module://matplotlib_inline.backend_inline')\n",
    "%matplotlib inline\n",
    "dataframe={}\n",
    "\n",
    "for region in source_regions_sort_index:\n",
    "    x=[]\n",
    "    y=[]\n",
    "    cubecounts=[]\n",
    "    for neuron in regionNeurons[region]:\n",
    "        # if region in regionMaxSample and neuron['sampleid']==regionMaxSample[region]:\n",
    "        cubecounts.append(neuron['isocubecount'])\n",
    "        print(region,neuron['cubecount'],neuron['isocubecount'])\n",
    "        x.append(neuron['cubecount'])\n",
    "        y.append(neuron['isocubecount'])\n",
    "    s = pd.Series(np.array(cubecounts))\n",
    "    plt.scatter(x,y)\n",
    "    if s.size>0:\n",
    "        dataframe[region]=s \n",
    "regionSampleISOCubeCount = pd.DataFrame(dataframe)\n",
    "regionSampleISOCubeCount.sum()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>VPM</th>\n",
       "      <th>VPL</th>\n",
       "      <th>VPLpc</th>\n",
       "      <th>VAL</th>\n",
       "      <th>MD</th>\n",
       "      <th>LP</th>\n",
       "      <th>PO</th>\n",
       "      <th>CM</th>\n",
       "      <th>TH</th>\n",
       "      <th>ar</th>\n",
       "      <th>CL</th>\n",
       "      <th>Eth</th>\n",
       "      <th>PIL</th>\n",
       "      <th>PoT</th>\n",
       "      <th>SPFp</th>\n",
       "      <th>ZI</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>24.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    VPM  VPL  VPLpc  VAL    MD   LP   PO   CM   TH    ar    CL  Eth  PIL  PoT  \\\n",
       "0   0.0  1.0    0.0  0.0  10.0  1.0  2.0  1.0  0.0   1.0   7.0  0.0  0.0  2.0   \n",
       "1   1.0  2.0    1.0  0.0   0.0  8.0  3.0  3.0  3.0   0.0  19.0  0.0  0.0  5.0   \n",
       "2   0.0  2.0    0.0  0.0   0.0  0.0  2.0  0.0  4.0   1.0   6.0  0.0  1.0  1.0   \n",
       "3   1.0  1.0    0.0  0.0   0.0  NaN  0.0  0.0  0.0  11.0   9.0  0.0  6.0  2.0   \n",
       "4   3.0  1.0    NaN  0.0   0.0  NaN  0.0  NaN  1.0   1.0  18.0  4.0  NaN  0.0   \n",
       "5   1.0  3.0    NaN  NaN   0.0  NaN  1.0  NaN  4.0   0.0   1.0  1.0  NaN  2.0   \n",
       "6   0.0  3.0    NaN  NaN   1.0  NaN  2.0  NaN  0.0   1.0   4.0  2.0  NaN  6.0   \n",
       "7   0.0  1.0    NaN  NaN   4.0  NaN  0.0  NaN  1.0   0.0   2.0  1.0  NaN  0.0   \n",
       "8   0.0  0.0    NaN  NaN  10.0  NaN  1.0  NaN  NaN   4.0  13.0  2.0  NaN  5.0   \n",
       "9   1.0  0.0    NaN  NaN   3.0  NaN  1.0  NaN  NaN   1.0  24.0  NaN  NaN  1.0   \n",
       "10  NaN  0.0    NaN  NaN   0.0  NaN  0.0  NaN  NaN   5.0   1.0  NaN  NaN  2.0   \n",
       "11  NaN  1.0    NaN  NaN   2.0  NaN  1.0  NaN  NaN   1.0   0.0  NaN  NaN  0.0   \n",
       "12  NaN  1.0    NaN  NaN   0.0  NaN  2.0  NaN  NaN   1.0   7.0  NaN  NaN  2.0   \n",
       "13  NaN  1.0    NaN  NaN   3.0  NaN  1.0  NaN  NaN   0.0   NaN  NaN  NaN  0.0   \n",
       "14  NaN  1.0    NaN  NaN   9.0  NaN  3.0  NaN  NaN   NaN   NaN  NaN  NaN  4.0   \n",
       "15  NaN  6.0    NaN  NaN   2.0  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  0.0   \n",
       "16  NaN  0.0    NaN  NaN   9.0  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  3.0   \n",
       "17  NaN  1.0    NaN  NaN   4.0  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  7.0   \n",
       "18  NaN  1.0    NaN  NaN   5.0  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  0.0   \n",
       "19  NaN  1.0    NaN  NaN   0.0  NaN  2.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "20  NaN  3.0    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "21  NaN  3.0    NaN  NaN   NaN  NaN  4.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "22  NaN  3.0    NaN  NaN   NaN  NaN  5.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "23  NaN  1.0    NaN  NaN   NaN  NaN  3.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "24  NaN  0.0    NaN  NaN   NaN  NaN  1.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "25  NaN  0.0    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "26  NaN  1.0    NaN  NaN   NaN  NaN  1.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "27  NaN  NaN    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "28  NaN  NaN    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "29  NaN  NaN    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "30  NaN  NaN    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "31  NaN  NaN    NaN  NaN   NaN  NaN  4.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "32  NaN  NaN    NaN  NaN   NaN  NaN  7.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "33  NaN  NaN    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "34  NaN  NaN    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "35  NaN  NaN    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "36  NaN  NaN    NaN  NaN   NaN  NaN  1.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "37  NaN  NaN    NaN  NaN   NaN  NaN  1.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "38  NaN  NaN    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "39  NaN  NaN    NaN  NaN   NaN  NaN  1.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "40  NaN  NaN    NaN  NaN   NaN  NaN  0.0  NaN  NaN   NaN   NaN  NaN  NaN  NaN   \n",
       "\n",
       "    SPFp   ZI  \n",
       "0    4.0  4.0  \n",
       "1    0.0  1.0  \n",
       "2    0.0  0.0  \n",
       "3    0.0  0.0  \n",
       "4    0.0  2.0  \n",
       "5    0.0  0.0  \n",
       "6    NaN  0.0  \n",
       "7    NaN  NaN  \n",
       "8    NaN  NaN  \n",
       "9    NaN  NaN  \n",
       "10   NaN  NaN  \n",
       "11   NaN  NaN  \n",
       "12   NaN  NaN  \n",
       "13   NaN  NaN  \n",
       "14   NaN  NaN  \n",
       "15   NaN  NaN  \n",
       "16   NaN  NaN  \n",
       "17   NaN  NaN  \n",
       "18   NaN  NaN  \n",
       "19   NaN  NaN  \n",
       "20   NaN  NaN  \n",
       "21   NaN  NaN  \n",
       "22   NaN  NaN  \n",
       "23   NaN  NaN  \n",
       "24   NaN  NaN  \n",
       "25   NaN  NaN  \n",
       "26   NaN  NaN  \n",
       "27   NaN  NaN  \n",
       "28   NaN  NaN  \n",
       "29   NaN  NaN  \n",
       "30   NaN  NaN  \n",
       "31   NaN  NaN  \n",
       "32   NaN  NaN  \n",
       "33   NaN  NaN  \n",
       "34   NaN  NaN  \n",
       "35   NaN  NaN  \n",
       "36   NaN  NaN  \n",
       "37   NaN  NaN  \n",
       "38   NaN  NaN  \n",
       "39   NaN  NaN  \n",
       "40   NaN  NaN  "
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regionSampleISOCubeCount"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.8.3 ('neuronVis')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "a2217924a9c4863f76703be6cb8ccdf290877477987e914727ffc8c22acac11c"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
